On 2008/03/14, at 13:53, Laurent Sansonetti wrote:
Say that you receive a non-mutable string from Objective-C, and want to call the #upcase! method on it. AFAIK, MacRuby could 1) raise an exception 2) auto-convert the receiver as mutable (but a new object will likely have to be created).
There's no way to do this switch in the general case of incoming CFTypes. Can we easily fudge the locals table to point to a new object in YARV?
Yes we most probably can, but the real question is, should we? I personally have a preference for 1), which is more consistent with the underlying APIs. Mmh.
I would support 1). Because of consistency. For example, defaults = NSUserDefaults.standardUserDefaults defaults.objectForKey('key').upcase! It is intended to replace a string in the user defaults with upcase one. With auto-conversion, it would seem to work at a glance. But it won't change the string in the user defaults. Isn't it confusing? -- Satoshi Nakagawa