Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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 私有方法&x27;评估';调用数学:模块(NoMethodError)_Ruby - Fatal编程技术网

Ruby 私有方法&x27;评估';调用数学:模块(NoMethodError)

Ruby 私有方法&x27;评估';调用数学:模块(NoMethodError),ruby,Ruby,我不知道如何使用这种方法。对我来说,这真的很奇怪,它应该是数学中的一个私有方法,因为这将使开发人员完全无法访问它(据我所知)。我错过了什么 我的代码如下: str = "(5+9)/(3+4)" puts Math.eval(str) 我不确定您想要实现什么,但尽管str有一个有效的ruby语法(上面示例中的语法),您可以这样做: ▶ str = "(5+9)/(3+4)" #⇒ "(5+9)/(3+4)" ▶ instance_eval str #⇒ 2 只有eval可以工作。。为什么要调

我不知道如何使用这种方法。对我来说,这真的很奇怪,它应该是数学中的一个私有方法,因为这将使开发人员完全无法访问它(据我所知)。我错过了什么

我的代码如下:

str = "(5+9)/(3+4)"
puts Math.eval(str)

我不确定您想要实现什么,但尽管
str
有一个有效的ruby语法(上面示例中的语法),您可以这样做:

▶ str = "(5+9)/(3+4)"
#⇒ "(5+9)/(3+4)"
▶ instance_eval str
#⇒ 2

只有
eval
可以工作。。为什么要调用
Math
?是的,它是
private
方法。所有
内核
模块方法在Ruby中都是私有的。私有方法不需要显式接收器。@ArupRakshit-我认为更准确的说法是,当使用显式接收器调用私有方法时,它们会引发异常。使用send方法可以绕过此限制(例如
Math.send(:eval,str)