Code Review: SymToProc

tfpt review “/shelveset:SymToProc;REDMOND\tomat”
Comment :
Implements Symbol#to_proc

Tomas

So we’re going to have sym#to_proc available in the core 1.8
implementation? Other than that question, this looks good.

Now I have to go remove some hacks :wink:

JD

Probably no eval magic, unless you are thinking of a more advanced
version of Sym#to_proc than I have been using.

I define it with:

Class Symbol
Def to_proc
Lambda {|x| x.send(self)}
End
End

Sure, it doesn’t cover everything, but it hits the 90% cases.

Yep, we already have other methods from 1.8.7, like instance_exec. The
advantage of having these in 1.8.6 is that it will work in apps that
check if to_proc method is present. I guess they might do some eval
magic if the method is not implemented which slows things down.

Tomas

Yes, something like this might be quite accurate:

class Symbol
def to_proc
Proc.new do |*args|
raise ArgumentError if args.size == 0
target = args.delete_at(0)
target.send(self, *args)
end
end
end

instance_exec on the other hand is also 1.8.7 method and is usually
emulated by string eval.

Tomas