Ruby将字符串转换为方法名
我在ruby文件中定义了两个方法Ruby将字符串转换为方法名,ruby,methods,Ruby,Methods,我在ruby文件中定义了两个方法 def is_mandatory(string) puts xyz end def is_alphabets(string) puts abc end 包含方法名称的数组 methods = ["is_mandatory", "is_alphabets"] 当我做以下事情时 methods.each do |method| puts method.concat("(\"abc\")") end 它只是显示,是强
def is_mandatory(string)
puts xyz
end
def is_alphabets(string)
puts abc
end
包含方法名称的数组
methods = ["is_mandatory", "is_alphabets"]
当我做以下事情时
methods.each do |method| puts method.concat("(\"abc\")") end
它只是显示,是强制性的(“abc”)是字母表(“abc”),而不是实际调用该方法
如何将字符串转换为方法名?
非常感谢您的帮助
干杯 最好的方法可能是:
methods.each { |methodName| send(methodName, 'abc') }
请参见尝试使用“发送”
还可以添加散列以向方法发送参数
send("method_name", "abc", {add more parameters in this hash})
以前使用
send
的所有解决方案都可以,但建议改用(否则您可以调用私有方法)
例如:
'string'.public_send(:size)
=> 6
另一方面,Ruby的方法是使用问号而不是前缀“is”,即
mandatory?
和alphabets?
。如果这些方法属于某个类,那么您需要这样的方法:obj=OwningClass.new;methods.each{meth}obj.send(meth,'abc')}
或者如果我们谈论的是类方法,那么方法.each{method}class.send(meth,argument)}
'string'.public_send(:size)
=> 6