首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是"!!“符号在Ruby中是什么意思?

问什么是"!!“符号在Ruby中是什么意思?
EN

Stack Overflow用户
提问于 2010-09-29 20:09:27
回答 3查看 715关注 0票数 4
代码语言:javascript
复制
def test
!!session[:test]
end

!!-这是做什么的?我们能不能移除它,并仍然假设它的工作原理是一样的?

EN

回答 3

Stack Overflow用户

发布于 2010-09-29 20:13:48

那就是double bang (or bang bang)了。

它本身并不是一个真正的操作符。这实际上是两个!运算符,together...which执行双重否定。它用于确保您使用的是布尔值。

票数 9
EN

Stack Overflow用户

发布于 2010-09-29 20:49:24

第一个!将其操作数强制为布尔值,然后将其取反。第二个!对求反后的值求反。求和的效果是将操作数强制转换为布尔类型。所以如果你改变它,那么方法将不再返回布尔值,它将返回该符号的散列中的任何内容。如果删除它不会有任何变化,但是使用!!的好处是您不能滥用方法调用从会话中获取对象。

票数 4
EN

Stack Overflow用户

发布于 2010-09-30 01:22:56

为了解决您的第二个问题,如果删除双重否定,您的方法将发生细微的变化,因为您将返回对象,而不是TrueClass或FalseClass。

那!!通常是不受欢迎的,除非您显式地需要布尔值(例如,如果您正在构建API)。由于Ruby会将任何非nil和非false的值计算为the,因此通常只返回有问题的对象以便您可以调用其方法是安全的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3821428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档