17, optional chaining, for 3.0.1

This commit is contained in:
shanks
2016-11-13 13:47:47 +08:00
parent 03d6026823
commit db9afa4d0b

View File

@ -1,4 +1,4 @@
# 可选链式调用Optional Chaining # 可选链式调用
----------------- -----------------
@ -14,6 +14,7 @@
> >
> 2.2 > 2.2
> 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-15 > 翻译+校对:[SketchK](https://github.com/SketchK) 2016-05-15
> 3.0.1shanks2016-11-13
本页包含内容: 本页包含内容:
@ -25,7 +26,7 @@
- [连接多层可选链式调用](#linking_multiple_levels_of_chaining) - [连接多层可选链式调用](#linking_multiple_levels_of_chaining)
- [在方法的可选返回值上进行可选链式调用](#chaining_on_methods_with_optional_return_values) - [在方法的可选返回值上进行可选链式调用](#chaining_on_methods_with_optional_return_values)
可选链式调用Optional Chaining是一种可以在当前值可能为`nil`的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用就会成功;如果可选值是`nil`,那么调用将返回`nil`。多个调用可以连接在一起形成一个调用链,如果其中任何一个节点为`nil`,整个调用链都会失败,即返回`nil` *可选链式调用*是一种可以在当前值可能为`nil`的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用就会成功;如果可选值是`nil`,那么调用将返回`nil`。多个调用可以连接在一起形成一个调用链,如果其中任何一个节点为`nil`,整个调用链都会失败,即返回`nil`
> 注意 > 注意
Swift 的可选链式调用和 Objective-C 中向`nil`发送消息有些相像,但是 Swift 的可选链式调用可以应用于任意类型,并且能检查调用是否成功。 Swift 的可选链式调用和 Objective-C 中向`nil`发送消息有些相像,但是 Swift 的可选链式调用可以应用于任意类型,并且能检查调用是否成功。
@ -33,7 +34,7 @@ Swift 的可选链式调用和 Objective-C 中向`nil`发送消息有些相像
<a name="optional_chaining_as_an_alternative_to_forced_unwrapping"></a> <a name="optional_chaining_as_an_alternative_to_forced_unwrapping"></a>
## 使用可选链式调用代替强制展开 ## 使用可选链式调用代替强制展开
通过在想调用的属性、方法、或下标的可选值optional value后面放一个问号(`?`),可以定义一个可选链。这一点很像在可选值后面放一个叹号(`!`)来强制展开它的值。它们的主要区别在于当可选值为空时可选链式调用只会调用失败,然而强制展开将会触发运行时错误。 通过在想调用的属性、方法、或下标的可选值后面放一个问号(`?`),可以定义一个可选链。这一点很像在可选值后面放一个叹号(`!`)来强制展开它的值。它们的主要区别在于当可选值为空时可选链式调用只会调用失败,然而强制展开将会触发运行时错误。
为了反映可选链式调用可以在空值(`nil`)上调用的事实,不论这个调用的属性、方法及下标返回的值是不是可选值,它的返回结果都是一个可选值。你可以利用这个返回值来判断你的可选链式调用是否调用成功,如果调用有返回值则说明调用成功,返回`nil`则说明调用失败。 为了反映可选链式调用可以在空值(`nil`)上调用的事实,不论这个调用的属性、方法及下标返回的值是不是可选值,它的返回结果都是一个可选值。你可以利用这个返回值来判断你的可选链式调用是否调用成功,如果调用有返回值则说明调用成功,返回`nil`则说明调用失败。
@ -146,7 +147,7 @@ class Residence {
`Residence`还提供了访问`rooms`数组的快捷方式,即提供可读写的下标来访问`rooms`数组中指定位置的元素。 `Residence`还提供了访问`rooms`数组的快捷方式,即提供可读写的下标来访问`rooms`数组中指定位置的元素。
此外,`Residence`还提供了`printNumberOfRooms()`方法,这个方法的作用是打印`numberOfRooms`的值。 此外,`Residence`还提供了`printNumberOfRooms`方法,这个方法的作用是打印`numberOfRooms`的值。
最后,`Residence`还定义了一个可选属性`address`,其类型为`Address?``Address`类的定义在下面会说明。 最后,`Residence`还定义了一个可选属性`address`,其类型为`Address?``Address`类的定义在下面会说明。