けいじゅ@SHLジャパンです. In [ruby-list :00456 ] the message: "[ruby-list:456] Re: Q. repeat ", on Aug/30 23:02(JST) matz / caelum.co.jp (Yukihiro Matsumoto) writes: >|{}はローカルスコープの導入という機能があり,for >|>にはその機能はありません. >|へー. そうだったんですか. 何か深い意味があるのでしょうか? >これがないと lambda にならないんです. lambda? lisp の lambda という意味ではそうかも知れませんけど... そうで なくては行けない理由はあまりないような... >しかし,気持は > > 10.upto(100) do > ... > end > >に傾いています.他のメイルでもいくつか例をあげましたけど,ど >れが良いでしょうね. うーん. 気分としては制御構造は頭に何かあって欲しいなというのがあります. if/while/for/case/when/begin みんなそうですよね? そういう観点から見る と. > (1) > for i do aCollection.each > ... > end ○. > (2) > do aCollection.each for i > ... > end ○ > (3) > aCollection.each do |i| > ... > end × > (4) > aCollection.each using i do > ... > end × > (5) > do aCollection.each using i > ... > end ○ あと, パラメータの扱いですよね. パラメータが出てくる構文は for だけで したが, for arg1,arg2,... in obj ... end でしたので, 制御文?(for)の後に パラメータが来る方が 統一がとれているか なと... そうすると, 上記の中では(1)が良いと感じたのでした. ただ, 今度はパラメー タがない場合もないとは限らないので, それを考えると do aCollection.delete(elm) ... end という感じのも捨て難いんですけど... 無理なんですよね?? 10.upto(100) do |i| ... end そういう意味では, 上記もまあ悪くはないかなという感じです. >|for k,v in hash.sort{|v1, v2| v1[0] <=> v2[0]} >| print k, v >|end >|# ハッシュをキーワードでソートして印字する. >| >|です. > >え? と思ったけど,できますね. >作者も予想しなかった組合せだが,ちゃんと動いている.よしよし. 最近このfor ...とイテレータのミックスした使い方が気に入っています. ブ ロックの中が長い時には, for ... みたいな使い方が良くて, 短い時にはイテ レータブロックが良いですね. __ ..........................................石塚 圭樹@SHLジャパン(株)... ------------->アドレス変わりました!! e-mail: keiju / shljapan.co.jp <----