[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にも似てないことは無い.

In This Thread

Prev Next