当前位置:  开发笔记 > 后端 > 正文

什么!! 做红宝石?

如何解决《什么!!做红宝石?》经验,为你挑选了2个好方法。

我正在使用一些使用此语法的代码(restful authentication).

def logged_in?
  !!current_user()
end

尝试谷歌搜索,但它似乎忽略"!!",将接受一个答案,可以告诉我如何找到有关搜索字符串的信息,如!! 在谷歌.



1> Tomas Markau..:

这是双重否定.第一个!转换为falseif ,如果current_user不是nilfalse.之后,它将其转换为true.所以结果总是一个布尔值而不是值current_user.结果总是true如果current_user不是falsenil.不然吧false.


例如,将其转换一个truthy或falsey值转换成真正布尔值(truthy => TRUE;,falsey =>`FALSE`).另请参阅此问题:http://stackoverflow.com/questions/1310344

2> Brian Campbe..:

它是否定运算符!,两次.这给出了一个具有相同真值的值,但显然只是一个布尔值.

在Ruby中,有一些被认为是"真"(任何除了许多价值观falsenil),并且被认为是一对夫妇是"假"(包括falsenil).第一个否定将所有真值转换为false,并将所有假值转换为true.第二个否定然后反转,给你一个与原始值具有相同真值的值,但只允许实际值truefalse.

如果您不希望人们logged_in?用作访问当前用户的方式,而是希望它只返回一个布尔值,这会很有用.

它等同于更明确和更详细:

def logged_in?
  if current_user()
    true
  else
    false
  end
end

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有