[ruby-list:636] Re: ruby 0.99.2-960927 available
From:
matz@... (Yukihiro Matsumoto)
Date:
1996-09-27 03:44:20 UTC
List:
ruby-list #636
In message "[ruby-list:635] Re: ruby 0.99.2-960927 available"
on 96/09/27, 石塚圭樹 <keiju@shljapan.co.jp> writes:
|
|けいじゅ@SHLジャパンです.
|>主な変更点は(括弧内は指摘した人,ありがとうございます)
|> * eval()で環境を引数に取れるように
|> * 現在の環境を取り出すメソッドbinding
|
|上記2つってどういう意味ですか
eval()にオプショナルな第2引数追加しました.これで特定の環境
でevalを実行できるようになります.
例:
def foo
baz = 25
$bind = binding
end
foo
eval("baz", $bind) => 25
eval("baz") => in `eval': undefined method `baz' for main(Object)
上記の例はローカル変数アクセスだけですけど,全ての変数とメソッ
ドの参照や定義など全部の環境がアクセスできるようになります.
bindingが呼ばれた場所にeval()が置いてあるのと全く同じ働きを
するわけです.
第2引数にはbindingメソッドの戻り値(binding object)または
lambda(proc object)が使えます.
まつもと ゆきひろ /:|)