From: matz@... (Yukihiro Matsumoto) Date: 1999-04-21T15:38:14+09:00 Subject: [ruby-list:13988] Re: Proc.new まつもと ゆきひろです In message "[ruby-list:13986] Re: Proc.new" on 99/04/21, akendo@t3.rim.or.jp writes: |> def foo(cmd=Proc.new) |> p cmd |> end |> |> foo{p 1} |> foo(Proc.new{p 1}) | |この例は、どちらも引数として手続きを与えてしまっていないでしょうか? |つまり、def foo(cmd=Proc.new)のデフォルトのProc.newは実行されて |いないようです。 前者はブロックを,後者は引数として手続きオブジェクトを与えて ます.で,前者の場合,デフォルト引数として Proc.new が呼び出 され,ここでブロックを手続きオブジェクトに変換してます. |まだまだローカル変数のスコープもあやしくて、頭にlocal = nil を |置きたい気持ちと戦っていますし、 実はブロック内初出のローカル変数は同じローカル変数でもアクセ ス速度が遅かったりしますので,頭に local = nil とやるのはお 勧めです.遠慮なく. 先頭に |お祈りの方は、あちこち心当たりでやってみます。うまく聞いてもら |えるとも思えませんが。 キリスト教系だと喜びます.^^;;; まつもと ゆきひろ /:|)