gpt4 book ai didi

ruby - Ruby 中有点复杂的 eval

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:28 25 4
gpt4 key购买 nike

我需要 eval 的特殊行为来评估字符串,例如:

'5a + 6b + 3a + 11b'

进入

'8a + 17b'

这可能吗?如果是,你能举一个合适的例子吗?我找到了 this最近的例子,谈话是关于用米和英寸评估字符串。

最佳答案

它的编写方式不是有效的 ruby​​ 语法,所以它不能被evaled。

你有两个选择:

a) 不要使用 eval。我认为这是最佳选择,但我认为这取决于上下文。

b) 将语法更改为 5.a + 6.b + 3.a + 11.b 并定义适当的 a 和 b 方法,如下所示:

class Expr
attr_accessor :a,:b
def initialize(a,b)
@a, @b = a,b
end

def +(other)
Expr.new(a + other.a, b + other.b)
end

def inspect
"<expr: #{a}a + #{b}b>"
end
end

class Numeric
def a
Expr.new(self, 0)
end

def b
Expr.new(0, self)
end
end

5.a + 6.b + 3.a + 11.b #=> <expr: 8a + 17b>

关于ruby - Ruby 中有点复杂的 eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1481292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com