- 1 名前:デフォルトの名無しさん mailto:sage [2009/06/05(金) 10:48:30 ]
- 最強のLL=軽量プログラム言語は、どれよ?
エントリーは、 Perl、PHP、Python、Ruby、JavaScript・・・ さあ、死ぬまで語りやがれ!!! ■LLとは? 軽量プログラミング言語(Lightweight Language,LL)とは、取り回しに優れ、 コードの作成や修正が容易と見なされるプログラミング言語のことを指す。 ここでいう「軽さ」はプログラマの負担の軽重を指し、 実行速度に優れているという意味ではない。 現在の水準では ・インタプリタ ・動的型 ・正規表現 ・関数オブジェクト などを利用できるものがLLと呼ばれることが多い。(Wikipediaより) ■過去スレ 【Perl,PHP】LLバトルロワイヤル5【Ruby,Python】 pc12.2ch.net/test/read.cgi/tech/1238720336/ 【Perl,PHP】LLバトルロワイヤル4【Ruby,Python】 pc12.2ch.net/test/read.cgi/tech/1234635513/ 【Perl,PHP】LLバトルロワイヤル3【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1215319832/ 【Perl,PHP】LLバトルロワイヤル2【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1209289408/ 【Perl,PHP】LLバトルロワイヤル【Ruby,Python】 pc11.2ch.net/test/read.cgi/tech/1188997302/
- 275 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 14:42:21 ]
- >>274
>あと、背反しがちなオブジェクト指向と関数型を調和させようとして そうなの?なぜ背反になるのかだれか教えて。
- 276 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 14:43:32 ]
- >>274
難解な表現はやめてもうちょっと簡単にいって。 じゃないとこのスレでは立ち入り禁止します。
- 277 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 15:09:12 ]
- おいおい、なんのためのスレだよ
- 278 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 15:36:40 ]
- Pythonにブロックスコープ無いけど、これは利点なの?欠点なの?
Rubyにも無いみたい。
- 279 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 15:44:14 ]
- グローバル変数さえ判り易ければいいと思うが、どうなんだろ
スコープ無しはプログラミングしたことないわ
- 280 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 16:11:37 ]
- ブロックスコープに頼って長々とメソッド書くんじゃない、ってことじゃないかな。
Ruby のブロック(は他の言語のブロックと違うけど)には、ブロックローカルが あるけどね。
- 281 名前:デフォルトの名無しさん [2009/06/26(金) 16:15:32 ]
- >>275
自分は >>274 じゃないが、 関数型だと変数は一度設定したら、書き換えない物であるのに対して、 オブジェクト指向だと、変数はドンドン書き換える物だから、 相容れないという事では?
- 282 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 16:32:36 ]
- >>280
ブロックスコープもそうだが ローカル関数 (メソッドではない) に頼ってもメソッドは長くなる。 そういう書き方が嫌なのはOOへの拘りが強いせいでもあるんじゃないか。
- 283 名前:デフォルトの名無しさん [2009/06/26(金) 17:04:21 ]
- でも拘るならスコープを狭い範囲に留めてさせてほしいなぁ。
その関数(やらメソッド)でしか使わない処理を、その関数(ry と同じ層に おくのはなんかイヤらしい感じ。
- 284 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 17:06:08 ]
- JavaScriptにもブロックスコープがないのは盲点。
- 285 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 17:10:14 ]
- ブロックスコープの意味が未だに判らない。
for や while の中だけで有効な変数を作りたいってこと? >>283 の言ってる、関数でしか使わない変数って、Pythonでも関数の中の ローカル変数になるよね?
- 286 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 17:18:37 ]
- for や while の中、じゃなくて、
ブロックはブロックなんだけど。 for や while じゃない、ただ単にブロックだけのブロックも あるわけで。
- 287 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 17:38:16 ]
- >>286
Pythonには無いよね>ブロックだけのスコープ まぁ、関数より小さいスコープ作るよりも、関数自体を 小さくする方が良いんじゃないかな。
- 288 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 18:19:01 ]
- >>281
>関数型だと変数は一度設定したら、書き換えない物であるのに対して、 そんなことはない。関数型言語のうちで、そういうのもあるけど、たいがいのはそこまで厳しくない。 Lisp, Scheme, OCaml, ... Haskellみたいなほうが少数派じゃね?
- 289 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 18:40:51 ]
- >>287
サブクラスを作るよりも、クラスの階層構造を小さくする方が良い って思ったことはないのか?
- 290 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 18:43:01 ]
- >>278
>Pythonにブロックスコープ無いけど、これは利点なの?欠点なの? >Rubyにも無いみたい。 一般的に、インタプリタではないと思う。これがあるのはコンパイル型言語の特徴じゃないかな。 もしインタプリタでブロックスコープを実現しようとすると、ブロックに入るたびに 新しい変数テーブルを用意し、ブロックから抜けるとそれを破棄しないといけない。 さすがにこれは、インタプリタでは性能がでない。 コンパイル型であればこれはコンパイル時に行なわれるから、実行時のペナルティはなしですむ。 インタプリタではあきらめろっつーことだな。ブロックスコープは、あったほうがうれしいけど、なくてもそうは困らない機能だから。
- 291 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 19:34:01 ]
- the requested operation has failed とエラーが出てapacheとphpの連携が取れない
システムファイルを変更すね前はapacheの起動はうまくいったのに、何をやっても 上のエラーが出てくる、誰か助けて〜〜〜〜〜〜〜〜!
- 292 名前:デフォルトの名無しさん [2009/06/26(金) 19:43:07 ]
- >>285
変数だけじゃなくて、関数内関数も定義したいってこと。
- 293 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 19:50:39 ]
- >>291
まずはログファイルを探して読んでみよう
- 294 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 21:20:59 ]
- やっぱりブロックスコープがどうのこうの言ってるのが意味わからん。
たとえば、Perlではほぼできてる、ってこと? #!/usr/bin/perl my $a = 'a'; my $sub = sub(){ print "page\n"; }; { my $a = 'b'; my $sub = sub(){ print "hoge\n"; }; print $a . "\n"; $sub->(); } print $a . "\n"; $sub->();
- 295 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 22:31:08 ]
- 本題からはずれるけど Perl で $a は使わないほうがいいよ
- 296 名前:デフォルトの名無しさん [2009/06/26(金) 22:36:05 ]
- そう言えば、C++で昔 forのルール変わったよね。
for (int i = 0; 〜) の i のスコープがfor文内になった。
- 297 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 22:41:04 ]
- >295
確か一部の組み込み関数とかで $a と $b を使うんだっけ?
- 298 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 23:00:52 ]
- >>292
少なくとも Python なら関数内関数作れるよ。 decorator なんて関数の中の関数の中で関数を作ったりする。
- 299 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 23:04:47 ]
- perlのブロックは変数の共有にも使えたりする。
今はさすがにオブジェクト指向で書くけどね。 set(12); print get(); exit; { my $common; sub set{ my ($value) = @_; $common = $value; } sub get{ return $common; } }
- 300 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 23:08:33 ]
- 関数内関数がやりたいだけならブロックにスコープ必要ないんでは
for文とかforeach文のブロックにスコープがあるのはいいような気がしないでもないけど ブロックにスコープがあることの必要性がよく分からぬ
- 301 名前:デフォルトの名無しさん mailto:sage [2009/06/26(金) 23:35:44 ]
- my $fizzbuzz;
{ my @a = qw(FizzBuzz - - Fizz - Buzz Fizz - - Fizz Buzz - Fizz - -); $fizzbuzz = sub {……}; } 今はさすがにオブジェクト指向で書くけどねw
- 302 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:02:18 ]
- >>288
余り詳しくないけど……。 Lisp, Scheme は、一般的に広い意味で関数型言語と言われているけど、 本当の関数型言語(純粋関数型言語)ではないと聞いたと思う。 OCaml は、 ML の方言にオブジェクト指向機能を追加した言語で、 純粋な関数型言語ではなさそう。
- 303 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:05:06 ]
- 流石にFizzBuzz問題にOOPは使わないなw
やろうと思えば、ジェネレータ使ったりするかも知れないがw
- 304 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:13:22 ]
- >302
OOPでも状態を変更するとは限らないから、やはり OOPと関数型が相いれないとは言えないよ 例えばフィールドへの代入もコンストラクタでしか行わないとかいくらでもやりようはある
- 305 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:21:01 ]
- >>302
そんなことこのスレの住人のほとんどが知ってることだと思うけど 何が言いたいの?
- 306 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:24:09 ]
- >>304
静的な関数型言語だと OOPは関数型によくある型システムの利点の一部を削り取ってしまう
- 307 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:31:50 ]
- >>305
そんなに突っかからなくてもいいじゃないか。 うゎーん(泣)
- 308 名前:デフォルトの名無しさん mailto:sage [2009/06/27(土) 00:44:21 ]
- ブロックスコープは当然有効な機能だわ。その点、Perlは実にいい。
- 309 名前:デフォルトの名無しさん [2009/06/27(土) 01:51:20 ]
- >>300
必要か否かでいってたら、たいていの便利なものは無くてもなんとかなるになっちゃうよ。 可読性を損なわないなら便利なものは使いたいな。
- 310 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 20:59:42 ]
- 誰か、HSPの存在価値を教えてくれ。
あれもLL?DSLではあるみたいだが(どっちかというと、ゲーム特化(BASIC風))
- 311 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 21:01:08 ]
- HSPはエントリーされていないのですれ違いデス。
- 312 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 21:10:38 ]
- 価値はそれこそ個人の価値観の問題だろう
DSLだという見解には同意する 小規模なゲーム・グラフィカルなアプリの作成に特化している ここで話題に上るような、いわゆるLLではないと思う
- 313 名前:デフォルトの名無しさん mailto:sage [2009/06/28(日) 23:44:47 ]
- >>309
>必要か否かでいってたら、たいていの便利なものは無くてもなんとかなるになっちゃうよ。 うん、そうだよ。それでいいじゃん。 ブロックスコープは、あれば便利だけど、なくてすごく困るほどのものでもない。 すくなくともインタプリタにはペナルティが大きそうだから向かないと思う。 >可読性を損なわないなら便利なものは使いたいな。 便利でもペナルティが大きければ導入されない。 便利さのかげでなにも犠牲にならないのならいいけど、犠牲になるものがあるなら あとはトレードオフでしょ。
- 314 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 01:25:09 ]
- ちゃんと計算されてる? ペナルティとか
- 315 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 05:45:18 ]
- >>313
だから>>309が言ってるのは、必要か否かなんていう切り口で語ったら ブロックスコープだろうがそれ以外のものだろうが、 大概のものは同じ結論しか出てこない、だから「ブロックスコープを」決め打ちで語りたきゃ もっと踏み込んだ切り口を何か出さないと、ってことでは。
- 316 名前:デフォルトの名無しさん [2009/06/29(月) 12:40:32 ]
- すみませんが教えてください。
下記のコードの3行目と5行目が何をしているのかわかりません。 特に3行目。。。 なぜrefで判定する必要があるのかもわからないので 詳しい方教えて下さい。 if(exists $form_data{$name} ) { if(ref $form_data{$name} ) { push @{ $form_data{$name} } , $value; } else { $form_data{$name} = [$form_data{$name} } , $value ]; } else { $form_data{$name} = $value; }
- 317 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 13:03:49 ]
- >>313
>便利でもペナルティが大きければ導入されない。 ところが、Perlにはあって、それでああいう パフォーマンスがでているのだが。 ペナルティとかおおげさにいうほどのことは ないんでは。
- 318 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 13:06:05 ]
- >>316
つ 配列のリファレンス、デリファレンス
- 319 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 13:28:44 ]
- >>317
Perlはmyやlocalで変数宣言をしているじゃないか。 Rubyとかだとそれがないから、ブロックスコープを実現しようとすると、 ブロックごとにチェックをいれないといけない。 じゃあ変数宣言のないRubyがウンコなんじゃないかということなら、否定はしない。
- 320 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 14:01:58 ]
- HSPは米国国防省の省内統制システムへの採用が内定してるらしいし
Rubyと同じパターンで「欧米で評価」→「日本で再評価」みたいな予感はする。
- 321 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 19:08:34 ]
- >>319
そもそも、変数宣言がなかったら、 ブロックスコープはどのように 表現すればいいの?
- 322 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 19:30:37 ]
- >>321
ブロックスコープは、無名関数をその場で1回だけ呼ぶのと同じ
- 323 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 20:52:50 ]
- 変数宣言させることで、汚いコードを書けないように制約を受けるわけで、それは凄く楽だわ。PHPとかJavaScriptとか関数ベースのスコープの言語と比べると、そう思う。
- 324 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 21:19:11 ]
- >>321
必要に応じて変数名の前か後ろにスコープを記述すればいいんじゃない?
- 325 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 21:40:22 ]
- >>324
よくわからんので擬似コードでも書いてみればいいじゃない
- 326 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 21:48:02 ]
- >>316
まず、$form_data{$name} に配列のリファレンスを入れたいようだ、っていうのはわかるよね。 んで、その配列に$valueを追加する、っていう処理だとおもう。 そのさい、配列のリファレンスならデリファレンスする必要があるし、ただの配列なら単純にリスト で追加してからリファレンスとして格納。 んで、5行目のこれ > $form_data{$name} = [$form_data{$name} } , $value ]; typoってないか? そして上記前提を覆す8行目 $form_data{$name} = $value; このカオス。$valueは何者よw 結論から言うと、このコードは読めなくていいよ。 おれは読めないwww おれが勘違いしてるのかな。そうだといいな。
- 327 名前:326 mailto:sage [2009/06/29(月) 21:53:40 ]
- うん。やっぱり勘違いしてた。
最初に値(単純にスカラー期待)が与えられたときは、普通にスカラー。 もいちど飛んできたときは、配列のリファレンスとして格納。それだけだね。 どうせなら最初から配列のリファレンスにするよね、っていう固定観念があった。
- 328 名前:デフォルトの名無しさん mailto:sage [2009/06/29(月) 22:43:18 ]
- >>325
擬似っつーかPowerShellだけど > $hoge = 100 > & { $hoge = 111; "global: $global:hoge local: $hoge" } global: 100 local: 111 みたいな感じ まあブロックの中にまたブロックを〜みたいな話になると別の方法になるけども
- 329 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 01:41:54 ]
- >>325
どうでもいいけどその言い回しおもしろいな
- 330 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 05:17:51 ]
- Rubyは、変数への代入で宣言も一緒にされるようなもんだっけ…
グローバルというかブロックの外に変数があるとそれを使い、ないとブロック内でのローカルになる。 たまにハマるんだよなー。 ↓こういうの 10.times do |x| i = x end puts i unko.rb:4: undefined local variable or method `i' for main:Object (NameError)
- 331 名前:デフォルトの名無しさん mailto:sage [2009/06/30(火) 06:37:41 ]
- >330
その場合、timesより前に i = nil でも i = 0 でも良いから代入が要るんよね 何回かやると慣れるがw
- 332 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 17:08:23 ]
- >>331
宣言だけじゃ駄目なんだっけ?
- 333 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 18:31:14 ]
- Rubyに変数宣言文は無いよ
最初の代入が宣言の代わりになるから、スコープ入る前に何か値を入れればスコープがそこに決まる
- 334 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 18:34:03 ]
- 代入が無ければメソッド呼び出しと区別できない
というか宣言に相当するような構文が無い。代入が宣言を兼ねるというか
- 335 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 18:36:47 ]
- 同じ変数名で局所化することはできるの?ブロックの外でiを使って、ブロックに入って、別のiを使うっていう。
- 336 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 18:40:14 ]
- 不安に思ったら関数のはじめあたりで初期化してやればいいだけ
- 337 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 19:57:20 ]
- >335
変数名被るほど長いメソッドにせず、素直にprivateメソッド作る
- 338 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 20:21:02 ]
- >>337
また後付け前提ですか
- 339 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 20:54:23 ]
- >338
「それぐらいしか無い」とでも解釈すれば良いじゃない 具体的な挙動は相手にお任せするのがOOP流さね
- 340 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 21:27:21 ]
- >>339
二行目が全く>>337etcとつながらないな 意味不明
- 341 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:09:06 ]
- >340
ん?二行目はすぐ上の行としか繋がってないよ? 同じ文章でも各自で解釈は違いうる、ってポリモーフィズムっぽいよなあ、と
- 342 名前:デフォルトの名無しさん [2009/07/01(水) 22:15:53 ]
- ブロックスコープの話とOOPの話がどう結びつくのよ
- 343 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:16:58 ]
- どこともつながってないだろw
- 344 名前:デフォルトの名無しさん [2009/07/01(水) 23:03:27 ]
- >>337
privateメソッドにしてそのメソッドから外に出したら、(そのオブジェクトの)他のメソッドからも呼べちゃうんじゃない?
- 345 名前:ぼくのかんがえたさいきょうの mailto:sage [2009/07/02(木) 01:14:18 ]
- 動くUMLだと思えば
そんなもんだろ
- 346 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 12:25:29 ]
- >>335
最新過ぎて第三者ライブラリの対応が追いついてないRuby1.9からはデフォルトでできる 一般的に使われてるRuby1.8ではそもそもできない s = '無くしたら地球がヤバいデータ' [1, 2, 3].each do |s| s*10 # 適当 end puts "#{s} は超重要だ!" # Ruby1.8.7 3 は超重要だ! # Ruby1.9.1 無くしたら地球がヤバいデータ は超重要だ! Ruby1.8 のせいで地球がヤバい
- 347 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 12:47:36 ]
- うは。便利だけど 1.8 との互換性を考えると恐ろしい。
- 348 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 13:09:04 ]
- 単なる変数じゃなくて、ブロックの引数であることに注意。
- 349 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 13:38:28 ]
- これでRuby使わない決心がついた。ありがとう。
- 350 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 13:40:21 ]
- 似たようなのはPythonでもあるね。
x = "hoge" y = [x for x in range(10)] print(x) Python 2.x なら xは9で、 3.xなら"hoge"のまま。 内包表記の中だけの名前になってる。
- 351 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 13:46:30 ]
- for や while を使う人がいないって言ったら Ruby 嫌がった人もいたし、人それぞれだな
- 352 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 13:59:02 ]
- >>346
Rubyって変数のスコープないの? 大昔に作られたLispですら変数のスコープがあるのに… だめだめじゃん
- 353 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 14:12:01 ]
- は?
- 354 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 14:25:43 ]
- >>352
>>346を煽るのに「スコープがない」と言ってしまうような人はこのスレに来ちゃだめでちゅよ
- 355 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 14:29:31 ]
- >>354
> ブロックの外でiを使って、ブロックに入って、別のiを使うっていう。 スコープだろうが
- 356 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:05:25 ]
- Rubyは local や my といった予約語を使わずに、文脈上でスコープを定義する
ブロック内に変数が出現したとき、その時点で可視かどうかで 可視 → その変数を使う(つまり、書き換える) 不可視→ 新規変数(ブロックローカル)として定義する という動作になってる >>346では [1, 2, 3].each のブロック内での s は可視なので、変数を単に再利用する これを最初から不可能にすることもできなくはなかったんだが、そうすると out = 外部データ' someblock do |s| puts out #=> undefined end というように、ブロック外の変数にアクセスする方法がなくなってしまう
- 357 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:23:21 ]
- メソッドの引数も、ブロックの引数も、ライブラリの名前とかも宣言するのに
変数を宣言しない理由がよくわからない
- 358 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:25:31 ]
- R++ が出来たら Ruby を認めてやるよ。
- 359 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:27:44 ]
- >>357
変数は使う場所多いからいちいち宣言するのめんどいじゃん? というような趣旨のことをどっかで聞いた覚えがある
- 360 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:30:50 ]
- 変数宣言なんか導入されたら現状のRubyの利点である
「ローカル変数かインスタンスメソッドかよくわからないがとにかく返り値を返す何かであるhoge」 というのができなくなるじゃないかー
- 361 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 15:35:22 ]
- それ、やってるのお前だけだから。
- 362 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 17:31:50 ]
- >357
ライブラリ名の宣言というのがよく分からんが メソッドやブロックの引数はRubyの場合、代入だろ? モジュールやクラスの定義は Module、Classのインスタンスを作成し定数に代入 さらに最後の式の結果を返す文 メソッド定義だけは少し毛色が違う気がするね あれはProcのインスタンス作成とかしないだろうし
- 363 名前:デフォルトの名無しさん [2009/07/03(金) 18:47:03 ]
- >>352
変数のスコープが無い って、言ってることがよくわからんな。 ローカル変数もインスタンス変数もクラス変数もスコープはちゃんとあるし。 ブロックがスコープを作らないってならPythonもJavascriptも一緒だし。
- 364 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 18:53:39 ]
- JavaScript1.7だったかからはブロックごとのスコープを持つletというのが出てきてvarの影が薄くなってる
- 365 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 18:54:27 ]
- Rubyの通常のブロックはスコープ作るよ
ブロック開始時の文脈でブロック内の変数の新規性をチェックしてるに過ぎない
- 366 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 19:03:09 ]
- うん、
class C def initialize hoge = 'hoge' @block = lambda{puts hoge} end def run hoge = 'MODIFIED!' @block.call end end C.new.run は、call で実行された環境ではなく block が定義された文脈を考慮して 'hoge' を表示する
- 367 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 19:05:44 ]
- 本スレにもクロージャのスコープが理解できなくて延々文句垂れてた奴がいたな
そんな特殊なものでもないしちょっと調べれば分かるのに、Rubyばっかり話題になる意味がよく分からん
- 368 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 19:12:55 ]
- それは別の話じゃね
- 369 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 22:11:48 ]
- >>365
単純に、initializeとdefとは違うスコープになってて 呼び出し先が違うだけって事じゃないの?
- 370 名前:デフォルトの名無しさん mailto:sage [2009/07/05(日) 04:29:55 ]
- >>349
遅すぎだろ。jkw
- 371 名前:デフォルトの名無しさん [2009/07/06(月) 00:08:20 ]
- なー、シンプルにそれぞれの最も優れてる実例を出してくれないか?
結局大事なのは使えるかだろ?
- 372 名前:デフォルトの名無しさん [2009/07/06(月) 00:37:19 ]
- www.google.com/
- 373 名前:デフォルトの名無しさん [2009/07/06(月) 21:34:43 ]
- えっ
- 374 名前:デフォルトの名無しさん [2009/07/06(月) 21:35:26 ]
- 何これこわい
- 375 名前:デフォルトの名無しさん [2009/07/07(火) 01:33:20 ]
- >>372 の脳内
(検索しろ!と言う。俺かっこいいべ!昔はmanだったけど今はGoogleだべ。)
|

|