【发布时间】:2012-10-03 23:00:04
【问题描述】:
这里是一个相当直截了当的问题。一直在查看一些代码,我看到了一个似乎将给定变量转换为布尔值的函数。它是这样的:
function to_bool( $var ) {
return !!$var;
}
很简单,但它是如何工作的?以前从未见过这种情况,谷歌搜索并没有真正让我到任何地方。额外的'!'有点翻转结果? '!$var' 可用于检查 var 是否为假,'!!' 也是如此将“假”变为真,反之亦然?
【问题讨论】:
-
你的意思是
(bool)$var;,因为在这两个之前我从未见过!在变量之前 -
!否定,所以两个双重否定,将其转换为布尔值... -
双重否定,我是这么想的。很奇怪。您认为它完全可靠吗?
-
这种结构在其他语言中更为常见。 Apparently this is one way to cast to bool in C++ without generating a compiler warning。 -- 事实上,这种做法可能源于 C 在 C99 之前没有原生 bool 类型(?)
-
我真的不建议为此使用函数。
(bool)$var无论你在哪里需要它都更加干净,并且不需要库函数来避免致命错误。