你为什么要使用 !!操作员

发布于 2024-12-06 09:07:31 字数 267 浏览 0 评论 0原文

我在一个例子中遇到了一些 ruby

def role?(role)
  return !!self.roles.find_by_name(role.to_s.camelize)
end

​​ 为什么你会使用 !!?这不就等于

 return self.roles.find_by_name(role.to_s.camelize)

加双感叹号给评价加点什么吗?

I came across abit of ruby in a example

def role?(role)
  return !!self.roles.find_by_name(role.to_s.camelize)
end

Why would you ever use !!? Is it not the same as

 return self.roles.find_by_name(role.to_s.camelize)

Does adding the double exclamation mark add something to the evaluation?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

假装爱人 2024-12-13 09:07:31

如果您只需要布尔值而不是对象,则可以使用它。除 boolean false 之外的任何非 nil 对象都表示 true,但是,您也会返回数据。通过双重否定,您将返回一个正确的布尔值。

You use it if you only want the boolean, not the object. Any non-nil object except for boolean false represents true, however, you'd return the data as well. By double negating it, you return a proper boolean.

无所的.畏惧 2024-12-13 09:07:31

免责声明:不是 ruby​​ 程序员,但对此有所尝试。

!!、双声或“not not”可能会将值转换为布尔值。一个 ! 返回相反的布尔值,然后另一次敲击会将其翻转为其正常的布尔值。

Disclaimer: Not a ruby programmer but having a stab at this.

!!, double bang or "not not", might convert the value to a boolean. One ! returns the boolean opposite and another bang thereafter will flip it to its normal boolean value.

弃爱 2024-12-13 09:07:31

这是一个双重否定,会产生一个布尔值:

irb(main):016:0> !1
=> false
irb(main):013:0> !0
=> false
irb(main):014:0> !nil
=> true
irb(main):015:0> !!nil
=> false

This is a double negation which results in a boolean:

irb(main):016:0> !1
=> false
irb(main):013:0> !0
=> false
irb(main):014:0> !nil
=> true
irb(main):015:0> !!nil
=> false
冷情妓 2024-12-13 09:07:31

是的,在您的情况下,您可以确定该函数仅返回 true 或 false。如果你愿意省略的话!!您将返回角色列表

Yes in your case you can be sure that the function is returning only true or false. If you would omit !! you would return a list of roles

梦晓ヶ微光ヅ倾城 2024-12-13 09:07:31

通过这个小技巧,您可以获得表达式的实际布尔值,例如:

!! 3 
=> true

!! nil
 => false 

!! 0
 => true 

在 Ruby 中,任何不是 nil 或 false 的东西都是 true!

在您的示例代码中,此技巧可确保您永远不会返回任何其他内容
但无论真假,

如果你省略 !! ,您将返回角色列表,或 nil

with this little trick you get the actual boolean value of an expression, e.g.:

!! 3 
=> true

!! nil
 => false 

!! 0
 => true 

In Ruby anything that isn't nil or false , is true!

In your example code this trick makes sure that you never return anything else
but true or false

If you would omit the !! , you would return the list of roles, or nil

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文