[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)が使えます.

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

In This Thread

Prev Next