From b306b94a3eee9f45a102c839d5ad449d1daf260c Mon Sep 17 00:00:00 2001 From: RockyMyx Date: Wed, 25 Jun 2014 10:29:19 +0800 Subject: [PATCH 1/2] Update 20_Extension.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根据原文翻译语义不清楚的地方并修改错别字一处 --- source/chapter2/20_Extensions.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/chapter2/20_Extensions.md b/source/chapter2/20_Extensions.md index d009ab77..1663bc79 100755 --- a/source/chapter2/20_Extensions.md +++ b/source/chapter2/20_Extensions.md @@ -99,6 +99,11 @@ println("A marathon is \(aMarathon) meters long") 如果你使用扩展向一个值类型添加一个构造器,该构造器向所有的存储属性提供默认值,而且没有定义任何定制构造器(custom initializers),那么对于来自你的扩展构造器中的值类型,你可以调用默认构造器(default initializers)和逐一成员构造器(memberwise initializers)。 正如在值类型的构造器授权中描述的,如果你已经把构造器写成值类型原始实现的一部分,上述规则不再适用。 + +如果你使用扩展向一个值类型添加一个构造器,如果该值类型已经向所有的存储属性提供默认值,而且没有定义任何定制构造器(custom initializers),那么你可以在值类型的扩展构造器中调用默认构造器(default initializers)和逐一成员构造器(memberwise initializers)。 +正如在值类型的构造器委托中描述的,如果你已经把构造器写成值类型原始实现的一部分,上述规则不再适用。 + + 下面的例子定义了一个用于描述几何矩形的定制结构体`Rect`。这个例子同时定义了两个辅助结构体`Size`和`Point`,它们都把`0.0`作为所有属性的默认值: ```swift @@ -267,7 +272,7 @@ extension Character { 该例子向`Character`添加了新的嵌套枚举。这个名为`Kind`的枚举表示特定字符的类型。具体来说,就是表示一个标准的拉丁脚本中的字符是元音还是辅音(不考虑口语和地方变种),或者是其它类型。 -这个类子还向`Character`添加了一个新的计算实例属性,即`kind`,用来返回合适的`Kind`枚举成员。 +这个例子还向`Character`添加了一个新的计算实例属性,即`kind`,用来返回合适的`Kind`枚举成员。 现在,这个嵌套枚举可以和一个`Character`值联合使用了: From 895edb77460fd49667fd9638b5ef06911e3024b7 Mon Sep 17 00:00:00 2001 From: RockyMyx Date: Wed, 25 Jun 2014 13:22:23 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=94=99=E5=88=AB=E5=AD=97=E5=8F=8A?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=A0=87=E8=AE=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/chapter2/21_Protocols.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/chapter2/21_Protocols.md b/source/chapter2/21_Protocols.md index b24eddd6..e1173fce 100755 --- a/source/chapter2/21_Protocols.md +++ b/source/chapter2/21_Protocols.md @@ -390,7 +390,7 @@ protocol TextRepresentable { ```swift extension Dice: TextRepresentable { - cun asText() -> String { + func asText() -> String { return "A \(sides)-sided dice" } } @@ -428,14 +428,14 @@ struct Hamster { return "A hamster named \(name)" } } -extension Hamster: TextRepresentabl {} +extension Hamster: TextRepresentable {} ``` 从现在起,`Hamster`的实例可以作为`TextRepresentable`类型使用 ```swift let simonTheHamster = Hamster(name: "Simon") -let somethingTextRepresentable: TextRepresentabl = simonTheHamester +let somethingTextRepresentable: TextRepresentable = simonTheHamester println(somethingTextRepresentable.asText()) // 输出 "A hamster named Simon" ``` @@ -483,7 +483,7 @@ protocol PrettyTextRepresentable: TextRepresentable { } ``` -`遵循``PrettyTextRepresentable`协议的同时,也需要`遵循`TextRepresentable`协议。 +遵循`PrettyTextRepresentable`协议的同时,也需要遵循`TextRepresentable`协议。 如下所示,用`扩展`为`SnakesAndLadders`遵循`PrettyTextRepresentable`协议: @@ -575,7 +575,7 @@ wishHappyBirthday(birthdayPerson) class Circle: HasArea { let pi = 3.1415927 var radius: Double - var area:≈radius } + var area: Double { return pi * radius * radius } init(radius: Double) { self.radius = radius } } class Country: HasArea { @@ -676,7 +676,7 @@ for object in objects { 在调用`incrementForCount`方法后,`Int`型`可选值`通过`可选绑定(optional binding)`自动拆包并赋值给常量`amount`。 -当`incrementForCount`不能被调用时,尝试使用`可选属性``fixedIncrement`来代替。 +当`incrementForCount`不能被调用时,尝试使用可选属性`fixedIncrement`来代替。 `ThreeSource`实现了`CounterDataSource`协议,如下所示: @@ -729,4 +729,4 @@ for _ in 1...5 { // -1 // 0 // 0 -``` \ No newline at end of file +```