Got it. thanks! On Mon, Jul 27, 2009 at 7:50 PM, Laurent Sansonetti <lsansone...@apple.com>wrote:
> Hi Linan, > You can evaluate "self" for that. > > id ruby_self = [[MacRuby sharedRuntime] evaluateString:@"self"]; > > Laurent > > On Jul 27, 2009, at 1:52 AM, Linan Wang wrote: > > 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 > > > > _______________________________________________ > 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