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)
)