Hello,
Just tried to do the following and got an odd error:
system::console::writeline(“Test”)
:0: wrong number of arguments (1 for 2147483647) (ArgumentError)
I do remember something similar a while ago - what why can’t it handle
this?
Thanks
Ben
Using proper casing will work:
System::Console.write_line(“Test”)
Test
=> nil
The casing you’re using yields:
system::console::writeline(“Test”)
:0: wrong number of arguments (1 for 2147483647) (ArgumentError)
Since “system” is Kernel#system. MRI yields a similar type of error
also, so the error reporting isn’t at fault (though the (1 for 21…)
message is a bit confusing:
irb(main):002:0> system::console::writeline(“Test”)
ArgumentError: wrong number of arguments
from (irb):2:in `system’
from (irb):2
And in case it’s not obvious, the CLR->Ruby casing/name-translation
rules are
- CLR namespaces and interfaces must be capitalized as they are mapped
onto Ruby modules
- CLR classes must be capitalized as they are mapped onto Ruby classes
- CLR methods that you call may either retain their original spelling
(ie “WriteLine”) or they may be used in a more Rubyesque form which is
obtained by translating CamelCase to lowercase_and_delimited (ie
“write_line”).
- CLR virtual methods which you override from IronRuby must be in their
lowercase_and_delimited form.
(Do we have a document that describes this?)
Now we do =)
http://ironruby.net/Documentation/CLR_Interop/Names
Needs examples, links to the spec, etc.