On Tue, Mar 3, 2009 at 11:11 PM, Meinrad Recheis <[email protected]>wrote:
> On Tue, Mar 3, 2009 at 9:46 PM, Thibaut Barrère <[email protected] > > wrote: > >> Hi, >> >> while writing specs for Magic, I noticed that: >> >> instance_from(MenuItem, "Hello").text.*to_s*.should == "Hello" >> >> to_s is required to get the assertion to pass. The following will return >> false: >> >> button = Button.new >> button.text = "Hello" >> puts button.text == "Hello" >> >> So I guess that CLR strings cannot be compared to Ruby strings unless to_s >> is applied. >> > > I have stumbled on this too and was very surprised. This problem does not > exist in IronPython (does it? please correct me if I am wrong). The behavior > I was expecting is that "on the ruby" side all strings are (or at least > behave exactly like) ruby strings, even if they come from .NET and are > automatically converted to clr-strings when passed into clr methods. > In addition to that, it would also be great to have automatic type conversion on the .NET side too. I'd expect to be able to assign a string pulled out from the interpreter to a C# string without the need to call ToString(). For example, string s = engine.Execute("'hi'") as string; Currently s would be null because the dynamic cast to System.String fails.
_______________________________________________ Ironruby-core mailing list [email protected] http://rubyforge.org/mailman/listinfo/ironruby-core
