从字符串创建Ruby条件

时间:2012-03-16 04:37:40

标签: ruby string

有点奇怪的问题,但我想做的事情如下:

a = 6
b = 12

cond = "((a > 5 and b > 10) or a > 50)" #user generated

if cond
  #do something
end

如何解析字符串,替换变量并作为条件运行。

2 个答案:

答案 0 :(得分:1)

一旦你有一个Ruby字符串cond,你就可以eval(cond)。但请注意,出于安全原因,人们会批评这一点。

顺便说一句,如果您实际对代码执行eval(cond),它将返回错误,因为示例中的字符串cond不是有效的Ruby代码。

答案 1 :(得分:1)

试试这个。

if eval(cond)
 # do something.
end