Hi,
Today I’m playing with CLR delegates
I’ve run into a strange behavior.
Take a look at the next C# block:
public class Printer
{
public delegate void PrintValue(string value);
}
Assuming the above is the content of assembly.dll, take a look at the
next IR console output:
require “assembly.dll”
=> true
p = Printer::PrintValue.new { |x| puts x }
=> Printer+PrintValue
p(“dsfs”)
“dsfs”
=> nil
d = Printer::PrintValue.new { |x| puts x }
=> Printer+PrintValue
d(“dsfd”)
:0: undefined method `d’ for main:Object (NoMethodError)
Why does p work and d doesn’t?
BTW, I see that delegates are converted to something called LightLambda.
What is that?
Many thanks!
Shay.
http://www.ironshay.com
Follow me: http://twitter.com/ironshay