我有这个方法它非常简单,几乎所有的时候isTrue param都应该为false并返回“2”。
def test(isTrue = false)
isTrue ? 1 : 2
end
这在我的开发环境中运行良好但是当我突然将它推到heroku时它开始返回就好像它是真的,而且我绝对肯定它的错误。我认为可能是检查var是否为零(或类似的东西)
我将三元组改为:
isTrue == true ? 1 : 2
它纠正了问题,我不明白为什么会这样。 有人可以解释一下吗? 谢谢!
答案 0 :(得分:1)
这绝对是错误的:
isTrue = true ? 1 : 2
它将变量isTrue
设置为true
并使用该语句的结果(true
)作为三元运算符的输入,因此这将始终返回true
将其更改为:
isTrue == true ? 1 : 2
关于开发和生产模式之间的区别:检查你是否真的将布尔值输入方法而不是整数(0或1),字符串('0','1','t','f','y ','n'等)或者没有。
答案 1 :(得分:0)
isTrue = true ? 1 : 2
这将始终返回1
作为Mark Meeus评论。
=
是ruby中的assignment operator,用于为变量指定给定值。
==
,但是comparison operator。
因此,使用您当前的代码,您将分配“isTrue = true”,然后告诉代码如果1
为isTrue
则返回true
。