只是想知道Ruby语言中的!!
是什么。
发布于 2009-02-07 22:05:29
不是不是。
它用于将值转换为布尔值:
!!nil #=> false
!!"abc" #=> true
!!false #=> false
这通常是不必要的,因为Ruby的唯一错误值是nil
和false
,所以通常最好让这个约定成立。
把它想象成
!(!some_val)
它的一个合法用途是防止大量数据被返回。例如,您可能不希望在has_image?
方法中返回3MB的图像数据,或者不希望在logged_in?
方法中返回整个user对象。使用!!
将这些对象转换为简单的true
/false
。
发布于 2009-02-07 22:06:16
如果右侧的对象既不是nil
也不是false
,则返回true
;如果是nil
或false
,则返回false
def logged_in?
!!@current_user
end
发布于 2009-02-08 18:10:29
!
的意思是否定布尔状态,两个!
s没有什么特别之处,只是一个双重否定。
!true == false
# => true
它通常用于强制一个方法返回一个布尔值。它将检测任何类型的真值,如字符串、整数等等,并将其转换为布尔值。
!"wtf"
# => false
!!"wtf"
# => true
一个更真实的用例:
def title
"I return a string."
end
def title_exists?
!!title
end
当您想要确保返回一个布尔值时,这是很有用的。虽然看到if 'some string'
和if true
是完全相同的流,但是有些人发现显式返回布尔值是有用的。
https://stackoverflow.com/questions/524658
复制相似问题