如何通过发送 ruby 调用带问号的方法
How to call a method with question mark via send in ruby
我有为符号列表生成的方法。其中一种方法在其定义中包含一个问号。我想用保存该符号的变量调用这样的方法。
假设我们为 :check_element 符号生成一个方法,相应的方法签名如下所示。
class A
def check_element?
end
end
现在我有一个变量 flag = :check_element
,但我无法调用 A.send(flag)
之类的方法
但 A.send((flag.to_s + '?').to_sym)
有效。
我在想是否有更好的方法来实现这一点。
无需将方法名称参数转换为符号,因为 send 也接受字符串。这允许将您的示例简化为
A.send(flag.to_s + '?')
可以使用字符串插值来简化
A.send("#{flag}?")
我有为符号列表生成的方法。其中一种方法在其定义中包含一个问号。我想用保存该符号的变量调用这样的方法。
假设我们为 :check_element 符号生成一个方法,相应的方法签名如下所示。
class A
def check_element?
end
end
现在我有一个变量 flag = :check_element
,但我无法调用 A.send(flag)
但 A.send((flag.to_s + '?').to_sym)
有效。
我在想是否有更好的方法来实现这一点。
无需将方法名称参数转换为符号,因为 send 也接受字符串。这允许将您的示例简化为
A.send(flag.to_s + '?')
可以使用字符串插值来简化
A.send("#{flag}?")