Swift学习:基本运算符(Basic Operators) (3)

  闭区间运算符(a...b)定义了一个从 a 到 b (包括 a 和 b )的所有值的区间。a 的值不能超过 b。闭区间运算符在迭代一个区间的所有值时是非常有用的,如在 for-in 循环中:

  for index in 1...5 {

    print("\(index) * 5 = \(index * 5)")

  }

  半开区间运算符

  半开区间运算符(a..<b)定义一个从 a 到 b 但不包括 b 的区间。之所以称为半开区间,是因为该区间包含第一个值而不包括最后一个值。

  半开区间的实用性在于当你使用一个从 0 开始的列表(如数组)时,非常方便地从 0 数到列表的长度。

  let names = ["Anna", "Alex", "Brian", "Jack"]

  let count = names.count

  for i in 0..< count {

    print("第 \(i + 1) 个人叫\(names[i])")

  }

  数组有 4 个元素,但 0..<count 只数到 3 (最后一个元素的下标),因为它是半开区间。

  逻辑运算符

  逻辑运算符的操作对象是逻辑布尔值。swift 支持基于 C 语言的三个标准逻辑运算符。

  逻辑非 (!a)

  逻辑与 (a && b)

  逻辑或 (a || b)

  逻辑非运算符

  逻辑非运算符(!a)对一个布尔值取反,使得 true 变 false ,false 变 true。

  它是一个前置运算符,需紧跟在操作数之前,且不加空格。读作 非a, 例子如下:

  let allowedEntry = false

  if !allowedEntry {

    print("ACCESS DENIED")

  }

  if !allowedEntry 语句可以读作 如果 非 allowedEntry ,接下一行代码只有在 非allowedEntry 为 true, 即 allowEntry 为 false 时被执行。

  在实例代码中,小心地选择布尔常量或变量有助于代码的可读性,并且避免使用双重逻辑非运算,或混乱的逻辑语句。

  逻辑与运算

  逻辑与运算符(a && b)表达了只有 a 和 b 的值都为 true 时,整个表达式的值才会是 true。

  只要任意一个值为 false,整个表达式的值就为 false。事实上,如果第一个值为 false,那么是不去计算第二个值的。因为它已经不可能影响整个表达式的结果了。这种被称作短路运算(short-circuit evaluation)。

  逻辑或运算符

  逻辑或运算符(a || b)是一个由两个 || 组成的中置运算符。它表示了两个逻辑表达式的其中一个为 true ,整个表达式就为 true。

  同逻辑与运算符类似,逻辑或也是 短路计算 的,当左端的表达式为 true 时,将不计算右边的表达式了,因为它不可能改变整个表达式的值了。

  逻辑运算符组合计算

  我们可以组合多个逻辑运算符来表达一个复合逻辑:

  if enteredDoorCode && passedRetinaScan || hasDoorKey || KnowOverridePassword {

    print("Welcome!")

  } else {

    print("ACCESS DENIED")

  }

  这个例子使用了含多个 && 和 || 的复合逻辑。但无论怎样,&& 和 || 始终只能操作两个值。所以这实际是三个简单逻辑连续操作的结果。

  swift 逻辑操作符 && 和 || 是左结合的,这意味着拥有多元逻辑操作符的复合表达式优先计算最左边的子表达式。

  使用括号来明确优先级

  为了一个复杂表达式更容易读懂,在合适的地方使用括号来明确优先级是很有效的,虽然它并非必要的,在上个关于门的权限的例子中,我们给第一个部分加个括号,使它看起来逻辑更明确:

  if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {

    print("Welcome!")

  } else {

    print("ACCESS DENIED")

  }

  这括号使得前两个值被看成整个逻辑表达中独立的一个部分。虽然有括号和没括号的输出结果是一样的,但对于读代码的人来说有括号的代码更清晰。可读性比简洁性更重要。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwfwy.html