Hi Laurent,Thanks for the explanation. A related question: how to get the "main/self" object of the macruby runtime?
On Mon, Jul 27, 2009 at 6:50 AM, Laurent Sansonetti <lsansone...@apple.com>wrote: > Hi Linan, > > You can't really assign a Ruby local variable from Objective-C, since Ruby > locals are generally scoped around a particular method, but you can assign > to an instance variable of a given object, a constant, a global variable (or > eventually a class variable, but this is evil, don't try that). > Additionally, you can evaluate a local variable assignment of a given > Binding object from Objective-C, but this becomes hardcore. > > A simple example, setting an instance variable of an object created from a > Ruby class from Objective-C: > > $ cat /tmp/t.m > #import <MacRuby/MacRuby.h> > > int main(void) > { > [[MacRuby sharedRuntime] evaluateString:@"class Foo; def foo; @foo; > end; end"]; > id obj = [NSClassFromString(@"Foo") new]; > NSLog(@"-> %@", [obj performRubySelector:@selector(foo)]); > [obj performRubySelector:@selector(instance_variable_set:) > withArguments: @"@foo", @"hello", nil]; > NSLog(@"-> %@", [obj performRubySelector:@selector(foo)]); > [obj performRubySelector:@selector(instance_variable_set:) > withArguments: @"@foo", @"world", nil]; > NSLog(@"-> %@", [obj performRubySelector:@selector(foo)]); > } > > $ gcc /tmp/t.m -o /tmp/t -fobjc-gc -framework MacRuby -framework Foundation > > $ /tmp/t > 2009-07-26 22:48:29.366 t[53439:903] -> <null> > 2009-07-26 22:48:29.368 t[53439:903] -> hello > 2009-07-26 22:48:29.369 t[53439:903] -> world > > HTH, > Laurent > > > On Jul 26, 2009, at 5:10 PM, Linan Wang wrote: > > Hi everybody, >> I'm trying to migrate from FScript to MacRuby. The problem I'm facing now >> is how to assign values to variables in the macruby runtime with objc codes. >> In Fscript framework, it's fairly straightforward: setObject:forIdentifier >> call of FSInterpreter. >> I've tried rb_define_varible but it does not work. seems it requires >> rb_objc_ocval_to_rval function call to convert the objc object to ruby >> object first. Any help is appreciated. Thanks >> >> -- >> Best regards >> >> Linan Wang >> _______________________________________________ >> MacRuby-devel mailing list >> MacRuby-devel@lists.macosforge.org >> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel >> > > _______________________________________________ > MacRuby-devel mailing list > MacRuby-devel@lists.macosforge.org > http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel > -- Best regards Linan Wang
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel