[Yarv-devel] block optimization
K.Sasada
ko1 @ namikilab.tuat.ac.jp
2004年 2月 9日 (月) 21:17:58 EST
ささだです。
さかいさんを無理やり登場させてしまいます。
[ruby] Re: ブロック
http://web.sfc.keio.ac.jp/~s01397ms/d/?date=20040204#p03
てな話がありました。
def m
x = y = 1
Proc.new{|a,b| a+b}
end
pr = m()
p pr.call(1,1) #=> 2
のとき、無駄に x,y を保存しますが、ホントはいらねっす。多分。
でも、
def m
x = y = 1
Proc.new{|a,b| eval("x+y")}
end
なんてあったりすると厄介なんで、迂闊に捨てられません。多分。
eval が他の名前かもしれないし、コンパイル時に静的に決定で
きません。動的にメソッドが変更する可能性があるので、やっぱり
捨てられません。
泣き寝入りするしかないのでしょうか。
あ、そもそも、
def m
x = y = 1
Proc.new{|a,b| a+b}
end
pr = m()
p eval("x+y", pr) #=> 2
なんてできるので、やっぱり無理か。
--
// SASADA Koichi @ namikilab.tuat.ac.jp
//
Yarv-devel メーリングリストの案内