ther
1
What I am trying to accomplist is:
class MyClass
def addVar(var, val)
instance_variable_set("@#{var}", val)
define_method("#{var}") { || instance_variable_get("#{var}") }
end
end
c = MyClass.new
c.addVar(‘aa’,10) # here pops the error
c.aa # should return 10
But I get this error:
NoMethodError: undefined method define_method' for #<MyClass:0x2d01cc0 @aa=10> from (irb):4:in
addVar’
from (irb):8
I know this should work because it’s used all over rails.
Advice me please
TheR
ther
2
On Thursday 15 March 2007 13:57, Damjan R. wrote:
c.addVar(‘aa’,10) # here pops the error
Advice me please
TheR
define_method won’t work in instance method, you have to use class
method o
just use eval(“def #{var}; here return value; end”);
ther
3
Marcin R. wrote:
On Thursday 15 March 2007 13:57, Damjan R. wrote:
c.addVar(‘aa’,10) # here pops the error
Advice me please
TheR
define_method won’t work in instance method, you have to use class
method o
just use eval(“def #{var}; here return value; end”);
Yep: Each of these two variants work:
eval “def #{var};instance_variable_get(’@#{var}’);end”
eval(“def #{var}; @#{var}; end”)
I was trying this too, but forgot to add @ to variable name.
Thanks
TheR
ther
4
On Thu, Mar 15, 2007 at 10:57:54PM +0900, Damjan R. wrote:
What I am trying to accomplist is:
class MyClass
def addVar(var, val)
instance_variable_set("@#{var}", val)
define_method("#{var}") { || instance_variable_get("#{var}") }
self.class.class_eval {
define_method("#{var}") { || instance_variable_get("@#{var}")
}
}
end
end
c = MyClass.new
c.addVar(‘aa’,10) # here pops the error
c.aa # should return 10
Regards,
Brian.