- 1 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 18:43:28 ]
- 前スレ
【Perl,PHP】LLバトルロワイヤル【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1188997302/
- 75 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 18:36:40 ]
- Ruby 知らんけど、実行時に動的にメソッドを追加する為の機構なんじゃないの
- 76 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 18:41:12 ]
- >>75
それならそれで、Compilerクラスを用意するなど、他にやりようがある。 コンパイル時のメソッド定義と同じシンタックスなんて狂気の沙汰。
- 77 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 18:58:44 ]
- つーか動的追加は既にModuleかどこかのメソッドにあるハズ。
- 78 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 19:04:30 ]
- まあ、ネストメソッドはメソッドスコープのメソッドだと予想するよなあ。
Rubyはとことん斜め上をいくって言うか・。
- 79 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 20:00:32 ]
- def 〜; end がメソッド定義文という、
中身が実行されない、それ自体は実行される文である、 とわかればどうってことない。
- 80 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 20:30:12 ]
- メソッドと関数の区別がついてない人がそれで納得できないから文句言ってるだけ
- 81 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 20:34:36 ]
- 関数はどうやって定義するの?
- 82 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 20:49:55 ]
- それがメソッドなのか関数なのかは、言語設計者の感覚次第だな。
- 83 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 20:49:58 ]
- >>79-80
いや、だからさ、実行コンテキストが外側のメソッドにある間にだけ有効な メソッドが定義されると考えるのが自然じゃない?って話なんだけど。
- 84 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 20:50:43 ]
- >>79
とりあえず>>76を読め。
- 85 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 20:51:35 ]
- どっちを自然と考えるかは、言語使用者の感覚次第だな。
- 86 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:02:53 ]
- まあ、百害あって一利無しな言語仕様であることは間違いない。
- 87 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:16:51 ]
- >>86
それを「自然」と考えてしまうカルト信者の悲しい性
- 88 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:19:31 ]
- >>86
何か害があるの?
- 89 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:20:54 ]
- 動的メソッド定義なら他にいくらでも作りようがあるのに、
ネストしたメソッドなんて、そんな紛らわしい方法を取る理由は何なんだろう。
- 90 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:23:12 ]
- 文字列を用意してからコンパイルするのダルかったとか。
- 91 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:23:14 ]
- 言語仕様として明らかに冗長だな。センスがない。
- 92 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:24:31 ]
- 中間コードにdef〜end間の文字列がそのまま保存されてそうだな(w
- 93 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:27:27 ]
- >>90
文字列からコンパイルしなくたって、無名メソッドを定義する構文を用意すればいいだけ。 クロージャのようにね。静的なメソッドと同じ構文要素を使うなんて、どうかしてる。
- 94 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:30:20 ]
- Rubyのパーサーはカオスだから
- 95 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:30:28 ]
- 通常のメソッドと同じ構文だと、どう困るの?
- 96 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:31:46 ]
- とにかく感覚の違いということにしたい感がひしひしと伝わってくる
- 97 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:34:00 ]
- 誰でも当然と考えることを、当然と考えられない感覚があることは理解できる
- 98 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:35:39 ]
- >>97
矛盾してるよ
- 99 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:36:54 ]
- >>95
メソッド定義の構文にしないで、メソッド本体の定義にしておけば、 他クラスのメソッドを定義したり、同じ本体を名前をかえて定義したりできるだろ。 静的メソッド定義の構文を使うことで、静的メソッドだから当然だった制約を 動的メソッド定義にまで持ち込んでしまっているんだよ。
- 100 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:39:21 ]
- >>77 によれば動的にメソッドを追加する機能は既に別にあるらしいよ。
- 101 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:47:24 ]
- どっちが先かわからないけどツギハギ感が否めないな
- 102 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:48:56 ]
- こんなクソ言語を喜んで使う奴は相当のMだな
- 103 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:49:51 ]
- >>92
それは普通じゃないの
- 104 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:50:54 ]
- >>103
麦茶吹いた(wwwww
- 105 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:54:46 ]
- きたないやつだなあ
ほかにどうせいっつーねん
- 106 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:55:27 ]
- >>81
Rubyに厳密な意味で関数の動作をするものはない というか>>79以上のものではないな 「メソッド内スコープのメソッド」を作りたい場合はRubyではProcを使う
- 107 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:56:43 ]
- >>105
あんな変なことする必要のない言語仕様にすればいい
- 108 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 21:58:49 ]
- >>107
>>105 は「コンパイル時点で評価出来ないコード辺を 文字列で保持しておく以外にどうするのか」という意味ね。
- 109 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:01:06 ]
- >>108
×評価出来ない ○面倒で評価してない
- 110 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:01:11 ]
- クロージャってコード片をそのまま中間コードが保持するものなのか?そんな話聞いたことないけど。
- 111 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:02:31 ]
- >>110
何でクロージャ?
- 112 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:03:15 ]
- >>110
普通は中間コードにコンパイルしたものを保持するな。
- 113 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:03:39 ]
- >>106
1, 「メソッド内スコープのメソッド」が作りたければ普通はメソッド内でdefを使う 2, メソッド内ではエラー無くdefが使える 3, しかし、それで定義されたメソッドは動的に追加される。しかもそれはメソッド内メソッドとはならない この仕様をもって「百害あって一利なし」と言っているのでは? > 「メソッド内スコープのメソッド」を作りたい場合はRubyではProcを使う こんなこと、普通の人は知りません。直感的でもありません。
- 114 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:05:04 ]
- >>106
Procでつくれるのは関数であってメソッドではない。
- 115 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:05:47 ]
- まあぶっちゃけProc自体呪われた仕様なんだけどね
- 116 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:06:01 ]
- >>106
メソッドと関数の区別ぐらいつけてくれよ。
- 117 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:07:42 ]
- メソッドと関数って言語によって意味が変わるからなぁ、Rubyはどうなの?
- 118 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:11:28 ]
- >>113
>1, 「メソッド内スコープのメソッド」が作りたければ普通はメソッド内でdefを使う 結局はこれが思い込みだっただけでしょ
- 119 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:13:19 ]
- メソッドも関数も無名関数もクロージャも区別無いJSって分かりやすい仕様だと思う。
- 120 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:13:21 ]
- しかしProcは関数を作るものであって「メソッド内スコープのメソッド」で使うものではないっぽいし
なにか別の問題があるっぽい書き込みがあるな
- 121 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:15:15 ]
- >>119
とても良い言語なのにスクリプト用途では流行らないよね
- 122 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:16:36 ]
- メソッド内スコープのメソッドって他の言語では一般的なの?
メソッドの意味を考えると、たぶん関数とか手続きで解決することだと思うんだけど
- 123 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:16:44 ]
- とある言語ではメソッドと関数の違いは値を返すか返さないかの違いだったりするし
- 124 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:17:36 ]
- >>114
>Procでつくれるのは関数であってメソッドではない。 これは何か問題があるの?
- 125 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:17:36 ]
- モジュールも名前空間もない言語はまともな開発には使えないよね。
- 126 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:18:55 ]
- Rubyにおける関数とメソッドの違いって何よ?
- 127 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:19:38 ]
- >>118
直感的な思い込みと実装をなるべく一致させるのが、良いLLなんでないの? いや、「Rubyは玄人専用」というなら何も言うことは無いけど >>120 ttp://d.hatena.ne.jp/ha-tan/20071031/1193883317 こんなのとか >>122 一般的とか言いがたいかも。 ただ使えない場合、普通は「禁止」される。
- 128 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:19:45 ]
- >>126
作者の気分次第で決まる
- 129 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:19:55 ]
- >>120
>しかしProcは関数を作るものであって「メソッド内スコープのメソッド」で使うものではないっぽいし これは何か問題があるの?
- 130 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:21:18 ]
- >>127
間違った思い込みを押し付けるユーザは良いユーザですか?
- 131 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:22:16 ]
- >>124
とりあえず、>>99を読んでわからなければ君にはセンスがないということ。
- 132 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:22:42 ]
- Procは仕様がコロコロかわるから怖くて使えないんだよ。
- 133 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:22:53 ]
- センスw
- 134 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:23:35 ]
- 批判してる側に根拠が希薄だと議論がグダグダになる良い例だな
- 135 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:23:52 ]
- いろんな意味でmatzにセンスがないのは疑いようがないんだが
- 136 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:24:05 ]
- ruby厨って実在するんだな。恐るべき視野の狭さだ。
- 137 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:25:02 ]
- 論理的な説明は諦めたのか?
- 138 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:25:39 ]
- 所詮カルト言語。
- 139 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:26:12 ]
- >>133
結局、君は>>80が言うところのメソッドと関数の区別がついていない人のようだね。
- 140 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:26:27 ]
- >>116
>メソッドと関数の区別ぐらいつけてくれよ。 >>116的にはメソッドと関数はどう違うんだ?
- 141 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:27:27 ]
- ところでmatzは関数とメソッドを明確に区別してたの?
- 142 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:27:34 ]
- Rubyのdefのネストの問題点に関する論理的な説明なら>>99でも十分だろう。
実際>>99への有効な反論も見あたらないし。
- 143 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:27:39 ]
- >>139
たった4文字からそこまで読み取れちゃうなんてお前最高だなw
- 144 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:28:32 ]
- >>142
>>100
- 145 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:29:44 ]
- >>144
そこはあるらしいじゃなくて具体的に書かないと話が進まないだろ
- 146 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:30:24 ]
- >>140
例えば、メッセージレシーバが違うな。
- 147 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:31:21 ]
- しかしこのスレはRubyが絡むとすごく伸びるなw
- 148 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:31:35 ]
- >>144
別の機構が用意されているということは、 defのネストが無駄なシンタックスであることの もう1つの理由になるわけだが、 それがどうかしたのか?
- 149 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:31:41 ]
- そもそも>>99の指摘自体がピントがずれてる
- 150 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:32:19 ]
- >>149
どうずれている?具体的に。
- 151 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:32:49 ]
- >>148
ネストしたメソッド定義用にdefを新設したならその通り でも現実は異なる
- 152 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:34:00 ]
- >>151
具体的に。なぜわざわざdefのネストを許すのか、その理由を示せ。
- 153 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:34:47 ]
- >>150
>>99は無名メソッドを定義出来る構文が欲しいなあと言ってるだけで defの何が悪いかは説明していない
- 154 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:35:31 ]
- >>130
間違っているのか? これが自然だと思うのはRubyist以外いないと思うんだけど。 class Test def func() def internal_func1() def internal_func2() end end end end 結果) obj = Test.new # obj.internal_func1() # undefined method # obj.internal_func2() # undefined method obj.func() # obj.internal_func2() # undefined method obj.internal_func1() obj.internal_func2()
- 155 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:36:02 ]
- >>152
具体的にって書いた通りだよ。日本語読めない?
- 156 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:36:10 ]
- >>153
>>99はdefのネストに比べて無名メソッドの定義がいかに優れているかの説明であり、 それはすなわちdefのネストの短所である。
- 157 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:36:31 ]
- >>156
>それはすなわちdefのネストの短所である。 ここまでは書いてないな。
- 158 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:37:08 ]
- >>155
おいおい、現実が異なるんならその現実がどうなのかを具体的に書かないとダメだろ
- 159 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:37:25 ]
- >>155
書いてないものは読めない。 別の仕組が既に用意されており、なおかつ、>>99に示された欠点があるにも関わらず defのネストを用いる理由を示しなさい。具体的に。
- 160 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:38:19 ]
- >>157
2つの言語要素があり、一方が他方を完全に置き替えることができ、なおかつ優れているのならば、 他方にとってそれは欠点となる。当然の話だと思うが、理解できないのか?
- 161 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:38:37 ]
- matzが既に老害なのはRubyスレでも良く知られた話。
あの言語ヲタはどうやらRubyを改造してないと落ち着かないらしい。 放っておくと変な仕様を入れて良い仕様を消し始めるから Rubyの開発MLは既に「matzの暴走を食い止める会」になってるよ。
- 162 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:39:11 ]
- るび厨の独善がよくわかるスレですね。
- 163 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:40:14 ]
- >>99 はさ、「他クラスのメソッドを定義したり、
同じ本体を名前をかえて定義したり」したいなら 短所かもしれんけど、そもそもそういう機能じゃ ないんだから、論点がずれてるんだよね。
- 164 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:40:44 ]
- MatzのPHP批判もお前が言うなとしか言いようのない内容だったしなw
- 165 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:41:16 ]
- >>160
>なおかつ優れている 新しい構文を導入する程じゃないな
- 166 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:41:21 ]
- >>163
どういう機能でなんでネスト許してるの?
- 167 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:41:47 ]
- >>163
それは、defのネストが提供している機能をすべてカバーした上で、の話であることを忘れないように。 defのネストのほうが優れている点を示しなさい。具体的に。
- 168 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:42:51 ]
- >>166
自分のクラスにメソッドを追加する機能でしょ。
- 169 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:43:08 ]
- >>165
defのネストも、わざわざネストを許す程のものじゃないと思うが? 何かdefをネストさせる積極的理由があるのならそれを示せ。具体的に。
- 170 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:43:09 ]
- >>168
なんでネスト許してるの?
- 171 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:44:10 ]
- >>167
何でそんなに偉そうな口調なのか分からんが、少し落ち着いて冷静になった方が良いぜ。
- 172 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:44:43 ]
- >>170
何でネストしたらダメなの?
- 173 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:44:52 ]
- >>168
それは>>99が言う「メソッド本体の定義」で完全に置き替えることができる上に、 「メソッド本体の定義」に比べて非常に制限的な機能しか持たないわけだが、 それでもなおdefのネストを支持する理由を示せ。具体的に。
- 174 名前:172 mailto:sage [2008/05/04(日) 22:45:19 ]
- あ、忘れてたわw
具体的に示せ。
- 175 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:45:56 ]
- ルビ厨にとってRubyの構文は絶対にして侵すべからざるものだから、
どんなに説明しても無駄だよ。
|

|