C# Overloads and IronRuby Classes

Hi there,

The next scenario worked for me on older versions but now the behavior
changed and I’d like to know if the change is a bug or by design.

This is my C# code:
public class MyClass {
public void A() { A(1); }
public void A(int val) { A(val, “foo”); }
public void A(int val, string str) { Console.WriteLine("{0} - {1}",
val, str); }
}

And now in IR:
class IronRubyRulez < MyClass; end
test = IronRubyRulez.new
test.a # Prints “1 - foo”
test.a(5) # Prints “5 - foo”
test.a(7, “boom”) # Prints “7 - boom”

So far so good… but now I’d like to override the method “a”:
class IronRubyRulez < MyClass
def a
super(12)
end
end
test = IronRubyRulez.new
test.a # Error! wrong number of arguments (2 for 0)

This worked on older versions and resulted with “12 - foo”.
Bug or by design?

Thanks!
Shay.

Shay F.
http://www.ironshay.com
Follow me: http://twitter.com/ironshay

Shay F. wrote:

Hi there,
…code snipped…
This worked on older versions and resulted with “12 - foo”.
Bug or by design?

Besides compiling the C# file, and requiring the resulting library, I
was able to run your code without modification.

Are you passing any special arguments to ir.exe when running the
program?
I am using the latest pre-compiled 0.6v from the codeplex site:
http://ironruby.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29640

Out of curiosity, you could try with a different method name, in case
there is possibly a conflict somewhere with another “A”

If the forum allows me, I’ll be attaching the exact files I used from
your example. Otherwise, I’ll email them to you.

Well, I tried again and it now works… can’t tell what was wrong the
other day…

Thanks for the help!
Shay.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs