If 语句运算符作为 ruby 中的变量
If statement operator as a variable in ruby
我正在尝试在 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
将运算符用作变量并不是对表达式求值。有什么方法可以做到这一点。
试试这个
x = 0
y = 1
z = "!="
x.public_send(z, y)
=> true
这里的技巧是知道 3 >= 5
是 3.>=(5)
的语法糖
为了重申上面的答案,我建议使用 send
。
但是, 可以按照您原来的风格编写代码 - 您只需要 eval
(即执行)它:
x = 0
y = 1
z = "!="
if eval("x #{z} y")
puts "True"
end
一般来说,强烈建议不要使用 eval
。它可能会导致重大安全问题(例如,如果您正在评估任意用户输入!),并且操作非常缓慢。
我正在尝试在 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
将运算符用作变量并不是对表达式求值。有什么方法可以做到这一点。
试试这个
x = 0
y = 1
z = "!="
x.public_send(z, y)
=> true
这里的技巧是知道 3 >= 5
是 3.>=(5)
为了重申上面的答案,我建议使用 send
。
但是, 可以按照您原来的风格编写代码 - 您只需要 eval
(即执行)它:
x = 0
y = 1
z = "!="
if eval("x #{z} y")
puts "True"
end
一般来说,强烈建议不要使用 eval
。它可能会导致重大安全问题(例如,如果您正在评估任意用户输入!),并且操作非常缓慢。