我有val1.rb和val2.rb,它们分别有foo1
和foo2
方法,一个名为startup.rb的启动脚本和一个名为core.rb的主脚本。
启动脚本分别从core.rb和main_obj
和obj1
类的对象obj2
和val1
创建该类的对象val2
。
Core希望调用它接受的方法作为参数。
下面是我编写的代码,但它引发了一个错误,指出未定义的方法'foo1'。
# #### foo1.rb #### #
class Test1
def foo1(par1)
puts "par1 is :#{par1}"
end
end
# #### core.rb #### #
class Core
def main_test (validation_obj, validation_method)
par1 = 'sample'
validation_obj.send :validation_method, par1
# other way #
# validation_method.call(par1)
end
end
# #### startup.rb #### #
require_relative 'core'
require_relative 'foo1'
require_realtive 'foo2'
main_obj = Core.new
testobj_1 = Test1.new
testobj_2 = Test2.new
method_name = 'foo1' # ==> want to pass this method as string
main_obj.main_test(testobj_1, method_name)
method_name = 'foo2'
main_obj.main_test(testobj_2, method_name)
非常感谢任何帮助。
答案 0 :(得分:1)
我认为您需要在符号中转换字符串
"foo".to_sym
你的代码:
class Core
def main_test (validation_obj, validation_method)
par1 = 'sample'
validation_obj.send validation_method.to_sym, par1
# other way #
# validation_method.call(par1)
end
end
我相信这会让你的代码更有效。