Console.Writeline - 2147483647 arguments?


#1

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


#2

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


#3

And in case it’s not obvious, the CLR->Ruby casing/name-translation
rules are

  1. CLR namespaces and interfaces must be capitalized as they are mapped
    onto Ruby modules
  2. CLR classes must be capitalized as they are mapped onto Ruby classes
  3. 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”).
  4. CLR virtual methods which you override from IronRuby must be in their
    lowercase_and_delimited form.

(Do we have a document that describes this?)


#4

Now we do =)
http://ironruby.net/Documentation/CLR_Interop/Names

Needs examples, links to the spec, etc.