2.1校对

2.1校对
This commit is contained in:
mmoaay
2015-10-26 14:39:28 +08:00
parent 0e03e07e8e
commit 832a8c8dd4

View File

@ -31,9 +31,11 @@ Swift 中存在四种表达式: 前缀prefix表达式二元binary
前缀表达式由可选的前缀符号和表达式组成。(这个前缀符号只能接收一个参数)
对于这些操作符的使用,请参见: Basic Operators and Advanced Operators
对于这些操作符的使用,请参见: [Basic Operators](TODO添加链接) 和 [Advanced Operators](TODO添加链接)
作为对上面标准库运算符的补充,你也可以对 某个函数的参数使用 '&'运算符。 更多信息,请参见: "In-Out parameters".
对于 Swift 标准库提供的操作符的使用,请参见[Swift Standard Library Operators Reference](https://developer.apple.com/library/prerelease/ios/documentation/Swift/Reference/Swift_StandardLibrary_Operators/index.html#//apple_ref/doc/uid/TP40016054)。
作为对上面标准库运算符的补充,你也可以对 某个函数的参数使用 '&'运算符。 更多信息,请参见: [In-Out parameters](TODO添加链接).
> 前置表达式语法
> *前置表达式* → [*前置运算符*](LexicalStructure.html#prefix_operator) _可选_ [*后置表达式*](../chapter3/04_Expressions.html#postfix_expression)
@ -46,9 +48,21 @@ try表达式由紧跟在可能会出错的表达式后面的`try`操作符组成
`try expression`
强制的try表示由紧跟在可能会出错的表达式后面的`try!`操作符组成,出错时会产生一个运行时错误,形式如下:
`try! expression`
关于`try`更多的例子和信息请参见Catching and Handling Errors.
当在二进制运算符左边的表达式被标记上 `try``try?` 或者 `try!` 时,这个操作对整个二进制表达式都产生作用。也就是说,你可以使用圆括号来明确操作符的应用范围。
```
sum = try someThrowingFunction() + anotherThrowingFunction() // try 对两个方法调用都产生作用
sum = try (someThrowingFunction() + anotherThrowingFunction()) // try 对两个方法调用都产生作用
sum = (try someThrowingFunction()) + anotherThrowingFunction() // Error: try 只对第一个方法调用产生作用
```
`try` 表达式不能出现在二进制操作符的的右边,除非二进制操作符是赋值操作符或者 `try` 表达式是被圆括号括起来的。
关于`try``try?``try!` 更多的例子和信息请参见:[Error Handling](TODO添加链接)
> try表达式语法
> *try 操作符* → [*try*](LexicalStructure.html#try_operator) | *try!*
> *try 操作符* → [*try*](LexicalStructure.html#try_operator) | try­? | *try!*
<a name="binary_expressions"></a>
## 二元表达式Binary Expressions
@ -57,7 +71,7 @@ try表达式由紧跟在可能会出错的表达式后面的`try`操作符组成
> `left-hand argument` `operator` `right-hand argument`
关于这些运算符operators的更多信息请参见Basic Operators and Advanced Operators.
关于这些运算符operators的更多信息请参见[Basic Operators](TODO添加链接)和 [Advanced Operators](TODO添加链接)。
> 注意
> 在解析时, 一个二元表达式表示为一个一级数组a flat list, 这个数组List根据运算符的先后顺序被转换成了一个tree. 例如: 2 + 3 * 5 首先被认为是: 2, + , `` 3``, *, 5. 随后它被转换成 tree 2 + 3 * 5
@ -137,7 +151,7 @@ f(x as Any)
`a!`操作符表示强制转换,其返回指定的类型,而不是可选的类型。如果转换失败,则会出现运行时错误。表达式`x as T` 效果等同于`(x as? T)!`
关于类型转换的更多内容和例子,请参见: Type Casting.
关于类型转换的更多内容和例子,请参见: [Type Casting](TODO添加链接).
> 类型转换运算符(type-casting-operator)语法
> *类型转换运算符* → **is** [*类型*](../chapter3/03_Types.html#type)
@ -283,7 +297,7 @@ struct Point {
}
```
闭包的参数声明形式跟方法中的声明一样, 请参见Function Declaration.
闭包的参数声明形式跟方法中的声明一样, 请参见:[Function Declaration](TODO添加链接).
闭包还有几种特殊的形式, 让使用更加简洁:
@ -309,7 +323,9 @@ myFunction { return $0 + $1 }
myFunction { $0 + $1 }
```
关于 向闭包中传递参数的内容,参见: Function Call Expression.
关于 向闭包中传递参数的内容,参见: [Function Call Expression](TODO添加链接).
### 参数列表Capture Lists
闭包表达式可以通过一个参数列表capture list 来显式指定它需要的参数。 参数列表由中括号 [] 括起来,里面的参数由逗号','分隔。一旦使用了参数列表,就必须使用'in'关键字在任何情况下都得这样做包括忽略参数的名字type, 返回值时等等)。
@ -328,7 +344,7 @@ myFunction { [unowned self] in print(self.title) } // unowned capture
myFunction { [weak parent = self.parent] in print(parent!.title) }
```
关于闭包表达式的更多信息和例子,请参见: Closure Expressions.
关于闭包表达式的更多信息和例子,请参见: [Closure Expressions](TODO添加链接),关于更多参数列表的信息和例子,请参见: [Resolving Strong Reference Cycles for Closures](TODO添加链接)。
> 闭包表达式语法
> *闭包表达式* → **{** [*闭包签名(Signational)*](../chapter3/04_Expressions.html#closure_signature) _可选_ [*多条语句(Statements)*](../chapter3/10_Statements.html#statements) **}**