Ruby on rails 如何通过ruby中的send调用带问号的方法
我有为符号列表生成的方法。其中一种方法在其定义中包含问号。我想用一个包含该符号的变量调用这样一个方法 假设我们为:check_元素符号生成一个方法,相应的方法签名如下所示Ruby on rails 如何通过ruby中的send调用带问号的方法,ruby-on-rails,ruby,metaprogramming,Ruby On Rails,Ruby,Metaprogramming,我有为符号列表生成的方法。其中一种方法在其定义中包含问号。我想用一个包含该符号的变量调用这样一个方法 假设我们为:check_元素符号生成一个方法,相应的方法签名如下所示 class A def check_element? end end 现在我有了一个变量flag=:check_元素,我无法调用类似a.send(flag) 但是A.send((flag.to_s+'?')。to_sym) 我在想是否有更好的方法来实现这一点 不需要将method name参数转换为符号,因
class A
def check_element?
end
end
现在我有了一个变量flag=:check_元素
,我无法调用类似a.send(flag)
但是A.send((flag.to_s+'?')。to_sym)
我在想是否有更好的方法来实现这一点 不需要将method name参数转换为符号,因为它也接受字符串。这样可以简化您的示例以
A.send(flag.to_s + '?')
可以使用字符串插值来简化
A.send("#{flag}?")
不需要将方法名参数转换为符号,因为它也接受字符串。这样可以简化您的示例以
A.send(flag.to_s + '?')
可以使用字符串插值来简化
A.send("#{flag}?")
我猜总是有
“{flag}?”
或:“{flag}?”
(如果你真的想要一个符号,即使发送
对字符串很满意)。@thebenman:你不能简单地设置flag=:check\u元素?
?“假设我们为:check\u元素符号生成一个方法,相应的方法签名看起来像这样”–为什么生成的:check_元素的方法名以结尾?
。问号从何而来?顺便说一句,check_元素?
是一个实例方法–你不能通过A.send(…)
调用它。我想总会有“{flag}?”
或:“{flag}?”
(如果你真的想要一个符号,即使send
对字符串很满意)@thebenman:你不能简单地设置标志=:check\u元素吗?
?“假设我们为:check\u元素符号生成一个方法,并且相应的方法签名看起来像”–为什么为:check\u元素
生成的方法名称以?
结尾。问号从何而来?顺便说一句,check\u元素?
是一个实例方法–您不能通过A.send(…)调用它
为了语义清晰,请尽可能建议使用public\u send
而不是send
。为了语义清晰,请尽可能建议使用public\u send
而不是send
。