这里到底发生了什么?

时间:2015-02-09 21:32:11

标签: objective-c logical-operators control-flow

 if ([self errorIsServerError:error] || [self errorIsBadRequest:error] || [self errorIsNetworkError:error]) {
    return YES;
}

方法errorIsServerError:errorIsBadRequest:errorIsNetworkError:都返回BOOL YESNO

但我不理解语法。是吗:

if (YES || YES || YES) { return YES; }

3 个答案:

答案 0 :(得分:3)

||相当于说'或'。因此,如果任何值为true,则代码返回true。这就是它的说法:

if ([self errorIsServerError:error] or [self errorIsBadRequest:error] or [self errorIsNetworkError:error]) 

如果其中任何一个都是真的那么

{
    return YES;
}

答案 1 :(得分:3)

如果特定分类适用于给定错误,则每个返回YES。如果错误是服务器或网络错误或错误请求,则该方法将返回YES

你可以这样看:

if ([self errorIsServerError:error]) {
  // The error is a server error
  return YES;
} else if ([self errorIsBadRequest:error]) {
  // The error is a bad request
  return YES;
} else if ([self errorIsNetworkError:error]) {
  // The error is a network error
  return YES;
}

在任何一种情况下,如果错误是这些类型中的任何一种,它将返回yes。如果它是两个或所有类型(YES是逻辑(包含)"或"运算符),它也将返回||

如果它不属于任何类型,那么您的方法将继续运行,直到它返回另一个返回语句。

答案 2 :(得分:2)

你要问的是什么并不是很清楚,但总的来说,你可能期望 none 这些错误通过,这意味着这个if条件会评估为false而你的程序可以继续。