在ruby中执行数学表达式字符串的最佳方法?
我想执行数学表达式,该表达式的字符串类似于以下示例字符串:在ruby中执行数学表达式字符串的最佳方法?,ruby,Ruby,我想执行数学表达式,该表达式的字符串类似于以下示例字符串: A=“23>=34” B=“7777” 我需要一些函数,比如if exec_string(A),它应该返回true或false 目前我正在使用此方法: rest=--#我将字符串拆分为三个(L-作为左数cmpr-作为比较,R-作为右数) class_name.calc(rest[0]、rest[1]、rest[2]) def自校准(左、中、右) 案例cmpr 当“时,您可以使用eval: eval("23>=34") #=>
A=“23>=34”
B=“7777”
if exec_string(A)
,它应该返回true或false
目前我正在使用此方法:
rest=--#我将字符串拆分为三个(L-作为左数cmpr-作为比较,R-作为右数)
class_name.calc(rest[0]、rest[1]、rest[2])
def自校准(左、中、右)
案例cmpr
当“时,您可以使用eval
:
eval("23>=34")
#=> false
eval("23<=34")
#=> true
eval(“23>=34”)
#=>错误
eval(“23您可以使用
调用由symbol标识的方法,并将指定的任何参数传递给它
比如说,
irb(main):001:0> 5.send(:+, 7)
=> 12
irb(main):002:0> 3.send(:>=, 5)
=> false
irb(main):003:0> 5.send(:>=, 2)
=> true
irb(main):004:0> 12.send(:-, 3)
=> 9
我将尝试将eval
与正则表达式相结合,以确保不存在字母(/[\d\.\+\s]+/
,例如,因为我唯一需要的操作是加法)。这样,只使用数字和运算符,就不能实例化任何类或调用非数字方法。有些用户会说这是一种不好的做法,但您可能希望了解和。也许对这些函数有更多经验的人可以评论它们是否是不好的做法以及原因。您应该特别提到eva我运行任何ruby代码,包括那些简单的表达式,这就是为什么这个问题是如何出现的,非常有趣…类似地,我一直在想如何在ruby中求解方程组。类似的eval
过程会起作用吗?
irb(main):001:0> 5.send(:+, 7)
=> 12
irb(main):002:0> 3.send(:>=, 5)
=> false
irb(main):003:0> 5.send(:>=, 2)
=> true
irb(main):004:0> 12.send(:-, 3)
=> 9