Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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 on rails 不带运算符的Ruby lazy if语句_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 不带运算符的Ruby lazy if语句

Ruby on rails 不带运算符的Ruby lazy if语句,ruby-on-rails,ruby,Ruby On Rails,Ruby,在ruby中可以做到这一点吗 variablename = true if variablename puts "yes!" end 而不是这个 variablename = true if variablename == true puts "yes!" end 编辑: 还考虑: variablename = 0 #which caused my problem 我不能让它工作。如果可能的话,这是一种说法吗?我现在正在学习ruby,这在PHP中是可能的,但我不确定如何在rub

在ruby中可以做到这一点吗

variablename = true
if variablename
   puts "yes!"
end
而不是这个

variablename = true
if variablename == true
   puts "yes!"
end
编辑: 还考虑:

variablename = 0 #which caused my problem
我不能让它工作。如果可能的话,这是一种说法吗?我现在正在学习ruby,这在PHP中是可能的,但我不确定如何在ruby中正确地使用它

当然,这是可能的

在ruby中,除了
nil
false
之外的所有内容都被视为true。意思是:

var = 0
if var
  # true!
end

var = ''
if var
  # true!
end

var = nil
if var
  # false
end

这是可能的。在ruby中,只有
nil
false
被视为false,任何其他值都是true。

xdazz和Vlad的答案是正确的,因此您需要分别捕获
0

variable = false if variable.zero?  # if you need 0 to be false
puts "yes!" if variable             # now nil, false & 0 will be considered false

有趣。令我困惑的是“0”并没有被视为
true
,而只是truthy,因此只有在查询真实性的语句中(例如
if
case
)它才是等效的。但是,如果你将真实值与
true
进行比较,你仍然会得到不平等的结果。说“我无法让它工作”这样的话无助于任何人诊断你做错了什么;如图所示,它对我来说很好。我把它设置为我的variablename=0,但无法理解为什么“它不起作用”。从下面我可以看到ruby认为0是真的,我可以看到我在那里设置了真,但这里我问这种编码风格是否可行。如果variable.zero?,则更为“ruby”的方法是
variable=false。话虽如此,我们应该理解语言的局限性(?),不要在这种情况下使用零。谢谢,更新了我的答案以反映这一点。在ruby中所做的设计选择是正确的,但如果这是一个需要处理的业务逻辑问题,而不是一个编程选择,那么它是合适的。