有人可以解释这个客观的C语句

时间:2014-05-02 22:05:03

标签: objective-c

我不明白这里发生了什么,我正在尝试使用正则表达式,我对以下内容感到困惑。

BOOL isMatch = match != nil;

完整的代码是

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[a-z0-9_]" options:NSRegularExpressionCaseInsensitive error:nil];
NSTextCheckingResult *match = [regex firstMatchInString:string options:0 range:NSMakeRange(0, [string length])];
BOOL isMatch = match != nil;

4 个答案:

答案 0 :(得分:2)

如果我们使用一些括号,可能会更清楚:

BOOL isMatch = (match != nil);

也就是说,如果match不是nil,则isMatch将为真(YES)。

答案 1 :(得分:1)

BOOL isMatch = match != nil;

是一种较短的写作方式

BOOL isMatch;
if(match != nil)
{
  isMatch = YES; // You found a match!
}
else
{
  isMatch = NO; // No match found :(
}

答案 2 :(得分:1)

这是一个基本的C语句,涉及变量赋值(位于=的左侧)和一个表达式(位于=的右侧)。

让我们从右侧开始:

match != nil;

评估此表达式。 !=运算符(不等于或不等)的计算结果为true或false。如果match已分配给非零值,则为true。如果尚未指定nil值,则为false。

然后将此真或假结果分配给BOOL变量。真实的结果是YES,错误的结果是NO

所以在英语中,声明说:

  

如果匹配的值为非零值,则isMatchYES,否则为NO

答案 3 :(得分:0)

将其分解为位,考虑是否将match != nil放入if语句,而是将结果分配给bool