摘录1:
module A
def cm(m,ret)
class_eval do
define_method(m.to_sym) do
return ret
end
end
end
end
和摘录2:
module B
def cm(m,ret)
class_eval do
"def #{m} #{ret} end"
end
end
end
这些模块中定义的方法将用于在类上创建返回特定值的方法。这是一个例子:
class Whatever
extend A
cm("two",2)
end
这将创建一个名为2的方法,它将返回2.事情是,第二个代码段中的代码不起作用。有什么想法吗?我以为class_eval
可以带一个字符串。
答案 0 :(得分:5)
class_eval
将字符串作为参数,但是您已将字符串传递给块中的函数。
请改为尝试:
module B
def cm(m,ret)
class_eval("def #{m}() #{ret} end")
end
end