我在网上找到的大多数例子都是这样写的:
if(x != nil)
// ...
这有什么问题吗?
if(x)
// ...
我在一个简单的程序中尝试了这两种方法,但找不到任何区别。
发布于 2011-05-30 22:51:50
在Objective-C中,nil
被定义为一个名为__DARWIN_NULL
的值,在if语句中,该值本质上为0
或false
。因此,写if (x == nil)
等同于写if (!x)
,写if (x != nil)
等同于if (x)
(因为与false
相比会产生一个否定,而与true
相比会保持条件不变)。
您可以用任何一种方式编写代码,这实际上取决于您认为哪种方式更具可读性。我发现if (x)
更有意义,但这取决于您的风格。
这就像是比较if (someCondition == true)
和if (someCondition)
。
这完全取决于你,以及谁将阅读代码。
编辑: Yuji正确地提到,由于Objective-C是C的超集,因此任何求值为0以外的条件都被认为是真的,因此,如果上面示例中的someCondition
求值为-1的整数值,则将其与true
进行比较将得到false
,并且if语句将不会被求值。一些需要注意的事情。
发布于 2011-05-30 22:52:46
两者都有
if (x != nil)
和
if ( x )
都是等效的,所以选择您认为能使您的代码对您(以及其他阅读和支持您的代码的人)更具可读性的的变体。
发布于 2015-03-29 04:31:39
两者都是一样的,这是一个风格问题,归根结底是你是否喜欢:
对比
我总是发现#1更清晰,但#2在文档中被广泛使用,因此该领域因此最好既了解这两种形式,并适应项目使用的内容,并在风格上保持一致。
https://stackoverflow.com/questions/6177719
复制相似问题