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
···
--
Posted via http://www.ruby-forum.com/.
define_method won't work in instance method, you have to use class method o
just use eval("def #{var}; here return value; end");
···
On Thursday 15 March 2007 13:57, Damjan Rems 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}") }
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
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.
···
On Thu, Mar 15, 2007 at 10:57:54PM +0900, Damjan Rems wrote: