From: Kazuhiro HIWADA Date: 1998-11-28T19:01:57+09:00 Subject: [ruby-dev:3696] Re: nested method? (Re: block local variable) ひわだです。 >>> "shugo" == MAEDA Shugo writes: 檜田> 僕はもともと他への影響をなくすために、局所的なメソッド(っていうか関数 檜田> ^^;)が欲しかったので、前者を意図してました。 shugo> ユーザーの要求を考えると、求められているのは前者のモデルなんですよね。 Proc や private method と比較して局所メソッドには、 (1)局所性(メソッド名が衝突しない。局所的なものは局所的に定義できる) (2)Proc と変数のスコープが違う (3)Proc よりリカーシブコールが書きやすい の3つぐらい特長がありますけど、(1)は Procオブジェクトでいいし、(2)は private method でいいし、(3)は private method とは同等で Proc でもなん とかなる。 fact = nil # <-- (3)リカーシブな Proc には宣言がいる fact = proc{|i| if i==0 then 1 else i * fact(i-1) end } shugo> やはり現在のRubyのモデルとは少し合わないような気もするんですが。 欠点はこれですね。 実行モデルは無理矢理あわせられますけど、Rubyの理念の方には少し…。「な んと、全てメソッドなのか!」と目から落ちかけたウロコが「なんだ、関数あ るじゃん」と元に戻ってしまう、とか :-) うーむ、なんか今のままのほうがいいような気もしてきた… ^^;。 # 局所メソッド、bug fixed。1.1c9 からのパッチ # http://easter.kuee.kyoto-u.ac.jp/~hiwada/ruby/gab/lmethod.patch.981128 # 手抜き実装のおもちゃです __; -- 檜田 和浩 ( hiwada@kuee.kyoto-u.ac.jp )