Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何通过ruby中的send调用带问号的方法_Ruby On Rails_Ruby_Metaprogramming - Fatal编程技术网

Ruby on rails 如何通过ruby中的send调用带问号的方法

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参数转换为符号,因

我有为符号列表生成的方法。其中一种方法在其定义中包含问号。我想用一个包含该符号的变量调用这样一个方法

假设我们为:check_元素符号生成一个方法,相应的方法签名如下所示

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