まつもと ゆきひろです

In message "[ruby-list:13986] Re: Proc.new"
    on 99/04/21, akendo / t3.rim.or.jp <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 とやるのはお
勧めです.遠慮なく.

先頭に

|お祈りの方は、あちこち心当たりでやってみます。うまく聞いてもら
|えるとも思えませんが。

キリスト教系だと喜びます.^^;;;

                                まつもと ゆきひろ /:|)