[#380] bug report#3 and request#5 — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
1 message
1996/08/06
[ruby-list:449] Re: proc, each
From:
matz@... (Yukihiro Matsumoto)
Date:
1996-08-29 05:44:15 UTC
List:
ruby-list #449
まつもと ゆきひろです.
In message "[ruby-list:447] proc, each"
on 96/08/29, 小澤索郎 <BXD06303@niftyserve.or.jp> 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にも似てないことは無い.