add code highlight

This commit is contained in:
梁杰
2014-08-25 21:14:56 +08:00
parent e0388c788a
commit 86a6802d5d
42 changed files with 209 additions and 40 deletions

View File

@ -3,6 +3,10 @@
> 校对:[EvilCome](https://github.com/Evilcome)
> 最终校对:[老码团队翻译组-Tyrion](http://weibo.com/u/5241713117)
<link rel="stylesheet" href="../assets/css/xcode.css">
<script src="../assets/js/highlight.pack.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
# 基本运算符
-----------------
@ -13,7 +17,7 @@
- [算术运算符](#arithmetic_operators)
- [组合赋值运算符Compound Assignment Operators](#compound_assignment_operators)
- [比较运算符](#comparison_operators)
- [三目运算符Ternary Conditional Operator](#ternary_conditional_operator)
- [三目运算符Ternary Conditional Operator](#ternary_conditional_operator)
- [空合运算符](#nil_coalescing_operator)
- [区间运算符](#range_operators)
- [逻辑运算符](#logical_operators)
@ -286,46 +290,46 @@ Swift 也提供恒等`===`和不恒等`!==`这两个比较符来判断两个对
rowHeight = rowHeight + 20
}
// rowHeight 现在是 90
第一段代码例子使用了三目运算,所以一行代码就能让我们得到正确答案。这比第二段代码简洁得多,无需将`rowHeight`定义成变量,因为它的值无需在`if`语句中改变。
三目运算提供有效率且便捷的方式来表达二选一的选择。需要注意的事,过度使用三目运算符会使简洁的代码变的难懂。我们应避免在一个组合语句中使用多个三目运算符。
<a name="nil_coalescing_operator"></a>
## 空合运算符(Nil Coalescing Operator)
空合运算符(`a ?? b`)将对可选类型`a`进行空判断,如果`a`包含一个值就进行解封,否则就返回一个默认值`b`.这个运算符有两个条件:
- 表达式`a`必须是Optional类型
- 默认值`b`的类型必须要和`a`存储值的类型保持一致
空合并运算符是对以下代码的简短表达方法
a != nil ? a! : b
上述代码使用了三目运算符。当可选类型`a`的值不为空时,进行强制解封(`a!`)访问`a`中值,反之当`a`中值为空时返回默认值b。无疑空合运算符(`??`)提供了一种更为优雅的方式去封装条件判断和解封两种行为,显得简洁以及更具可读性。
> 注意:
如果`a`为非空值(`non-nil`),那么值`b`将不会被估值。这也就是所谓的短路求值。
下文例子采用空合并运算符,实现了在默认颜色名和可选自定义颜色名之间抉择:
let defaultColorName = "red"
var userDefinedColorName:String? //默认值为nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
//userDefinedColorName的值为空 所以colorNameToUse的值为`red`
`userDefinedColorName`变量被定义为一个可选字符串类型默认值为nil。由于`userDefinedColorName`是一个可选类型,我们可以使用空合运算符去判断其值。在上一个例子中,通过空合运算符为一个名为`colorNameToUse`的变量赋予一个字符串类型初始值。
由于`userDefinedColorName`值为空,因此表达式` userDefinedColorName ?? defaultColorName `返回默认值,即`red`
另一种情况,分配一个非空值(`non-nil`)给 `userDefinedColorName`,再次执行空合运算,运算结果为封包在`userDefaultColorName`中的值,而非默认值。
userDefinedColor = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
//userDefinedColor非空因此colorNameToUsede的值为绿色
<a name="nil_coalescing_operator"></a>
## 空合运算符(Nil Coalescing Operator)
空合运算符(`a ?? b`)将对可选类型`a`进行空判断,如果`a`包含一个值就进行解封,否则就返回一个默认值`b`.这个运算符有两个条件:
- 表达式`a`必须是Optional类型
- 默认值`b`的类型必须要和`a`存储值的类型保持一致
空合并运算符是对以下代码的简短表达方法
a != nil ? a! : b
上述代码使用了三目运算符。当可选类型`a`的值不为空时,进行强制解封(`a!`)访问`a`中值,反之当`a`中值为空时返回默认值b。无疑空合运算符(`??`)提供了一种更为优雅的方式去封装条件判断和解封两种行为,显得简洁以及更具可读性。
> 注意:
如果`a`为非空值(`non-nil`),那么值`b`将不会被估值。这也就是所谓的短路求值。
下文例子采用空合并运算符,实现了在默认颜色名和可选自定义颜色名之间抉择:
let defaultColorName = "red"
var userDefinedColorName:String? //默认值为nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
//userDefinedColorName的值为空 所以colorNameToUse的值为`red`
`userDefinedColorName`变量被定义为一个可选字符串类型默认值为nil。由于`userDefinedColorName`是一个可选类型,我们可以使用空合运算符去判断其值。在上一个例子中,通过空合运算符为一个名为`colorNameToUse`的变量赋予一个字符串类型初始值。
由于`userDefinedColorName`值为空,因此表达式` userDefinedColorName ?? defaultColorName `返回默认值,即`red`
另一种情况,分配一个非空值(`non-nil`)给 `userDefinedColorName`,再次执行空合运算,运算结果为封包在`userDefaultColorName`中的值,而非默认值。
userDefinedColor = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
//userDefinedColor非空因此colorNameToUsede的值为绿色
<a name="range_operators"></a>
## 区间运算符