如果语句运算符作为ruby中的变量

时间:2017-11-14 09:45:30

标签: ruby variables variable-assignment operator-keyword

我想在ruby中做这样的事情:

x = 0
y = 1
z = "!="

if x #{z} y
  puts "True"
end
#True
#=> nil

x = 1
if x #{z} y
  puts "True"
end
#True
#=> nil

使用运算符作为变量不会计算表达式。任何方式都可以做到这一点。

2 个答案:

答案 0 :(得分:7)

试试这个

x = 0
y = 1
z = "!="

x.public_send(z, y)
=> true

这里的诀窍是知道3 >= 53.>=(5)

的语法糖

答案 1 :(得分:4)

重申上述答案,我建议使用send

但是, 可以用原始样式编写代码 - 您只需要eval(即执行)它:

x = 0
y = 1
z = "!="

if eval("x #{z} y")
  puts "True"
end

一般来说,强烈建议不要使用eval。它可能导致重大的安全问题(例如,如果您正在评估任意用户输入!),并且操作非常缓慢。