【问题标题】:Better way to perform logic in one line在一行中执行逻辑的更好方法
【发布时间】:2018-12-11 03:28:52
【问题描述】:

有没有更好的方法在一行中执行这个逻辑?

- (BOOL)isValueInRange {
    return ((level.integerValue > 100) || (level.integerValue < 0)) ? NO : YES;
}

【问题讨论】:

    标签: objective-c ternary-operator boolean-logic


    【解决方案1】:

    你可以这样做:

    return level.integerValue >= 0 && level.integerValue <= 100;
    

    如果值在范围内,则返回 true,否则返回 false。

    【讨论】:

    • 超级。我没有考虑反转条件以避免! 符号。好东西!
    • @pnizzle 给定方法的名称,这种形式的检查比带有反向检查的原始代码更具可读性。
    【解决方案2】:

    我不认为你可以避免重复level.integerValue 两次。

    return !((level.integerValue > 100) || (level.integerValue < 0))
    

    你也可以使用NSLocationInRange:

    NSLocationInRange(level.integerValue, NSMakeRange(0, 100)
    

    【讨论】:

      猜你喜欢
      • 2012-01-07
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-02
      • 1970-01-01
      • 2021-07-22
      相关资源
      最近更新 更多