如何通过发送 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}?")