Hi Jimmy, > In the latest builds this will work: > > >>> s = System::String.new 'fubar' > => 'fubar' > >>> s.class > => System::String > > Note that the result is single-quoted; that's a little hint that it's a > System::String rather than a Ruby String. The reason they are different is > mutability; Ruby strings are mutable, while the CLR's are not. Unfortunately > this means that not all the methods on a Ruby string can work on a CLR string > (like sub!, slice!, etc), but we have added any non-mutable methods to CLR > strings: > > >>> s.upcase > => "FUBAR" > > And any mutable methods will throw: > > >>> s.upcase! > :0: Mutating method `upcase!' called for an immutable string (System::String) > (TypeError)
I'd forgotten that CLR strings were immutable. It's been a while since I was doing anything on the CLR. Cheers for the feedback. ast > > -----Original Message----- > > From: ironruby-core-boun...@rubyforge.org [mailto:ironruby-core- > > boun...@rubyforge.org] On Behalf Of Andrew S. Townley > > Sent: Tuesday, April 21, 2009 10:08 AM > > To: ironruby-core@rubyforge.org > > Subject: [Ironruby-core] WinForms event handling > > > > Hi, > > > > I was doing a bit of experimenting with ironruby today to see if it > > might be useful for some prototyping work that I'm doing. I noticed > > that any of the strings returned from the CLR don't automatically > > include the ruby string methods. I would've expected that these would > > be mapped directly so that you could call @textfield.text.strip instead > > of @textfield.text.trim. > > > > Probably low on the priority list, but was just curious what the plan > > was. Assignment to locally created string references doesn't help > > either. I know it's early days yet, but this sort of thing will make > > it > > difficult for people to remember which API applies where--especially if > > CLR strings "escape" a particular method context. > > > > Interesting things seem to also happen if you try and create a CLR type > > directly: > > > > C:\>ir -v > > IronRuby 0.3 0.3.0.0 on .NET 2.0.0.0 > > > > C:\>iirb > > irb(main):001:0> require 'mscorlib' > > => true > > irb(main):002:0> s = System::String.new "fubar" > > TypeError: can't convert String into System::Char* > > from (irb):0 > > from :0:in `eval' > > from workspace.rb:80:in `evaluate' > > from context.rb:217:in `evaluate' > > from irb.rb:147:in `eval_input' > > from irb.rb:253:in `signal_status' > > from irb.rb:146:in `eval_input' > > from ruby-lex.rb:230:in `each_top_level_statement' > > from :0:in `loop' > > from ruby-lex.rb:229:in `each_top_level_statement' > > from :0:in `catch' > > from ruby-lex.rb:227:in `each_top_level_statement' > > from irb.rb:102:in `eval_input' > > from irb.rb:69:in `start' > > from :0:in `catch' > > from irb.rb:51:in `start' > > from iirb:0irb(main):003:0> > > > > The only way that I've found to ensure that it's really a Ruby string > > is > > to do something like this > > > > s = "" << clrstring > > > > Has anyone else hit this yet? > > > > Cheers, > > > > ast > > -- > > Andrew S. Townley <a...@atownley.org> > > http://atownley.org > > > > _______________________________________________ > > Ironruby-core mailing list > > Ironruby-core@rubyforge.org > > http://rubyforge.org/mailman/listinfo/ironruby-core > > _______________________________________________ > Ironruby-core mailing list > Ironruby-core@rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core -- Andrew S. Townley <a...@atownley.org> http://atownley.org _______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core