From: matz@... (Yukihiro Matsumoto) Date: 1996-08-29T14:44:15+09:00 Subject: [ruby-list:449] Re: proc, each まつもと ゆきひろです. In message "[ruby-list:447] proc, each" on 96/08/29, 小澤索郎 writes: | |小澤%Nifty@A.I.SOFTです. もうお仕事にはなれましたか? |1. proc を使うと嬉しいのはどういう場合でしょうか? | |iterator block を proc の instance として作成しておくと,何度も使い回 |せて嬉しい,のかな? | |ちょっと使用例が欲しいです. そうですね,いろいろと考えられますが,一番便利そうなのはやは りコールバックでしょう.Cなどと違って関数ポインタを渡すとい う面倒な事は必要ないです. list = TkScrollbox.new list.bind "Control-q", proc{exit} なんてのはどうでしょう.コントロールQが押されると proc が評 価されます.この例ではローカル変数などにアクセスしていません からあまりありがたみは少ないですけどね.後,trace_varとか trapとかも一種のコールバックとしてprocを受け付けますね. |2. each の別名で,do があると, | |aCollection do: [|:each| ... ] | |みたいでちょっと嬉しいです:-) あっても余計かな. おお,Smalltalk.「PerlのようなSmalltalk」を目指すRubyには魅 力的な提案ですね.しかし,実は do を予約語に使おうという考え があるので,それが採用されなかったら検討しますね. まつもと ゆきひろ /:|) おまけアンケート: 以下の内もっとも好みのものを選んでください.意味は aCollection.each { |i| ... } と同じです. (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 ... end # やっぱり3かなあ.Smalltalkにも似てないことは無い.