Jim*_*Jim 10 ruby ruby-on-rails
我正在使用一些使用此语法的代码(restful authentication).
def logged_in?
!!current_user()
end
Run Code Online (Sandbox Code Playgroud)
尝试谷歌搜索,但它似乎忽略"!!",将接受一个答案,可以告诉我如何找到有关搜索字符串的信息,如!! 在谷歌.
Tom*_*kas 30
这是双重否定.第一个!
转换为false
if ,如果current_user
不是nil
或false
.之后,它将其转换为true
.所以结果总是一个布尔值而不是值current_user
.结果总是true
如果current_user
不是false
或nil
.不然吧false
.
它是否定运算符!
,两次.这给出了一个具有相同真值的值,但显然只是一个布尔值.
在Ruby中,有一些被认为是"真"(任何除了许多价值观false
和nil
),并且被认为是一对夫妇是"假"(包括false
和nil
).第一个否定将所有真值转换为false
,并将所有假值转换为true
.第二个否定然后反转,给你一个与原始值具有相同真值的值,但只允许实际值true
或false
.
如果您不希望人们logged_in?
用作访问当前用户的方式,而是希望它只返回一个布尔值,这会很有用.
它等同于更明确和更详细:
def logged_in?
if current_user()
true
else
false
end
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1152 次 |
最近记录: |