这样的代码有什么快捷方式吗?
def test
obj = get_from_somewhere()
if obj
true
else
false
end
end
在 Python 中,我可以这样做:
return True if obj else False
这样的代码有什么快捷方式吗?
def test
obj = get_from_somewhere()
if obj
true
else
false
end
end
在 Python 中,我可以这样做:
return True if obj else False
一个常见的 Ruby 习惯用法是:
def test
!!get_from_somewhere
end
双爆炸将一个对象变成它的“布尔等价物”:
object = 'foo'
!object
# => false
!!object
# => true
请注意,在 Ruby 中,与 Python 不同,只是在布尔上下文false
中nil
计算为 false,例如:
!!0
# => true
这 !是非/否定运算符。它将对象转换为布尔变量,该变量是其值的负数。因此,如果 test = 1,则 !test 为假,因为 test 为真。(任何不是 false 或 nil 的值都是 true。)
使用 !!不是特定的运算符,它只是!两次。所以,如果一个值既不是 false 也不是 nil,那么 !! 返回真。
话虽这么说,编写几乎等同于 PHP 的表达式的更明显方式是三元运算符:
def test
obj = get_from_somewhere()
obj ? true : false # Returns true as long as obj is neither false nor nil.
end
或者,如果您不需要 obj 变量,则更简单:
def test
get_from_somewhere() ? true : false # Returns true as long as get_from_somewhere() is neither false nor nil.
end
这个怎么样:
obj ? true : false