Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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中执行数学表达式字符串的最佳方法?_Ruby - Fatal编程技术网

在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