所以,我有来自同事的代码有很多return false
和return true
。
例如这个方法:
def has_only_one_uploaded_image?
return false if images.size > 1
method_here
end
如果我删除false
作为返回值,如果我在其他条件下使用它,它是否仍然有效?
def commission_plan_product_available?
(has_only_one_uploaded_image? ||
(has_many_images? && images_are_saved?))
end
我很困惑何时使用正确的boolean
返回以及何时不应该。
我是Ruby新手(不确定nil
是否也可以false
条件,请耐心等待。谢谢。
有人可以解决一些问题吗?
答案 0 :(得分:5)
nil
是“假的”,如果直接在条件中使用 - 或者使用逻辑运算符&&
,||
等组合使用,则行为与false
相同,你对它的使用应该按你的意愿运作。
但是,通常更好的做法是从行为类似布尔值的方法返回true
或false
值。很少或没有额外的成本,true
和false
在内部与Ruby一样nil
(具有固定内容的简单VALUE,它不被解析为指针)
当你有一个方法可以返回你要求的对象时,有条件地返回nil
更有意义,或者出于某种充分的理由“没有”(例如你要求具有特定id的用户,但是那里)不是这样的用户。)
如果有疑问,请考虑如何记录该方法。如果您需要向用户解释为什么它会返回true
或nil
,并且此选择的解释似乎很复杂,那么执行预期的操作会更简单并返回{{1} }或true
对于极少数方法,返回false
,true
或false
甚至可能是有意义的 - 最后一个基本上是“我不知道”。缓存来自另一个返回nil
或true
的方法的输出的方法可能会这样做。