diff --git a/chapter1/02_a_swift_tour.html b/chapter1/02_a_swift_tour.html index 69feacc7..d9e006eb 100644 --- a/chapter1/02_a_swift_tour.html +++ b/chapter1/02_a_swift_tour.html @@ -743,7 +743,7 @@ sumOf(42, 597, 12)

函数可以嵌套。被嵌套的函数可以访问外侧函数的变量,你可以使用嵌套函数来重构一个太长或者太复杂的函数。

func returnFifteen() -> Int {
     var y = 10
-        func add() {
+    func add() {
         y += 5
     }
     add()
@@ -867,7 +867,7 @@ var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle"
 triangle.perimeter
 triangle.perimeter = 9.9
 triangle.sideLength
-

perimeter的 setter 中,新值的名字是newValue。你可以在set之后显示的设置一个名字。

+

perimeter的 setter 中,新值的名字是newValue。你可以在set之后显式的设置一个名字。

注意EquilateralTriangle类的构造器执行了三步:

  1. 设置子类声明的属性值
  2. diff --git a/chapter2/03_Strings_and_Characters.html b/chapter2/03_Strings_and_Characters.html index 140ac3f6..c0daa038 100644 --- a/chapter2/03_Strings_and_Characters.html +++ b/chapter2/03_Strings_and_Characters.html @@ -636,7 +636,7 @@ constantString += " and another Highlander"

    Swift 的 String 类型是值类型。如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作或在函数/方法中传递时,会进行值拷贝。任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值。值类型在 Structures and Enumerations Are Value Types 中进行了说明。

    注意:

    -

    其 Cocoa 中的 NSString 不同,当您在 Cocoa 中创建了一个 NSString 实例,并将其传递给一个函数/方法,或者赋值给一个变量,您永远都是传递或赋值同一个 NSString 实例的一个引用。除非您特别要求其进行值拷贝,否则字符串不会进行赋值新副本操作。

    +

    与 Cocoa 中的 NSString 不同,当您在 Cocoa 中创建了一个 NSString 实例,并将其传递给一个函数/方法,或者赋值给一个变量,您永远都是传递或赋值同一个 NSString 实例的一个引用。除非您特别要求其进行值拷贝,否则字符串不会进行赋值新副本操作。

    Swift 默认字符串拷贝的方式保证了在函数/方法中传递的是字符串的值,其明确了无论该值来自于哪里,都是您独自拥有的。您可以放心您传递的字符串本身不会被更改。

    在实际编译时,Swift编译器会优化字符串的使用,使实际的复制只发生在绝对必要的情况下,这意味着您始终可以将字符串作为值类型的同时获得极高的性能。

    @@ -743,7 +743,7 @@ let whispered = normal.lowercaseString

    Unicode 是文本编码和表示的国际标准。它使您可以用标准格式表示来自任意语言几乎所有的字符,并能够对文本文件或网页这样的外部资源中的字符进行读写操作。

    Swift 的字符串和字符类型是完全兼容 Unicode 的,它支持如下所述的一系列不同的 Unicode 编码。

    Unicode 术语(Terminology)
    -

    Unicode 中每一个字符都可以被解释为一个或多个 unicode 标量。字符的 unicode 标量是一个唯一的21位数字(和名称),例如 U+0061 表示小写的拉丁字母A ("a"),U+1F425 表示正面站立的鸡宝宝 ("🐥")

    +

    Unicode 中每一个字符都可以被解释为一个或多个 unicode 标量。字符的 unicode 标量是一个唯一的21位数字(和名称),例如 U+0061 表示小写的拉丁字母A ("a"),U+1F425 表示 ("🐥")

    当 Unicode 字符串被写进文本文件或其他存储结构当中,这些 unicode 标量将会按照 Unicode 定义的集中格式之一进行编码。其包括 UTF-8 (以8位代码单元进行编码) 和 UTF-16 (以16位代码单元进行编码)。

    字符串的 Unicode 表示

    Swift 提供了几种不同的方式来访问字符串的 Unicode 表示。

    diff --git a/source/chapter1/02_a_swift_tour.md b/source/chapter1/02_a_swift_tour.md index 476c013a..0fe5ce6c 100644 --- a/source/chapter1/02_a_swift_tour.md +++ b/source/chapter1/02_a_swift_tour.md @@ -200,7 +200,7 @@ func returnFifteen() -> Int { var y = 10 - func add() { + func add() { y += 5 } add() @@ -345,7 +345,7 @@ triangle.perimeter = 9.9 triangle.sideLength -在`perimeter`的 setter 中,新值的名字是`newValue`。你可以在`set`之后显示的设置一个名字。 +在`perimeter`的 setter 中,新值的名字是`newValue`。你可以在`set`之后显式的设置一个名字。 注意`EquilateralTriangle`类的构造器执行了三步: diff --git a/source/chapter2/03_Strings_and_Characters.md b/source/chapter2/03_Strings_and_Characters.md index 8fe256db..5a9ec2fc 100644 --- a/source/chapter2/03_Strings_and_Characters.md +++ b/source/chapter2/03_Strings_and_Characters.md @@ -89,7 +89,7 @@ Swift 的 **String** 类型是值类型。如果您创建了一个新的字符 > 注意: > -> 其 Cocoa 中的 NSString 不同,当您在 Cocoa 中创建了一个 NSString 实例,并将其传递给一个函数/方法,或者赋值给一个变量,您永远都是传递或赋值同一个 NSString 实例的一个引用。除非您特别要求其进行值拷贝,否则字符串不会进行赋值新副本操作。 +> 与 Cocoa 中的 NSString 不同,当您在 Cocoa 中创建了一个 NSString 实例,并将其传递给一个函数/方法,或者赋值给一个变量,您永远都是传递或赋值同一个 NSString 实例的一个引用。除非您特别要求其进行值拷贝,否则字符串不会进行赋值新副本操作。 Swift 默认字符串拷贝的方式保证了在函数/方法中传递的是字符串的值,其明确了无论该值来自于哪里,都是您独自拥有的。您可以放心您传递的字符串本身不会被更改。 @@ -256,7 +256,7 @@ Swift 的字符串和字符类型是完全兼容 Unicode 的,它支持如下 ###### Unicode 术语(Terminology) -Unicode 中每一个字符都可以被解释为一个或多个 unicode 标量。字符的 unicode 标量是一个唯一的21位数字(和名称),例如 `U+0061` 表示小写的拉丁字母A ("a"),`U+1F425` 表示正面站立的鸡宝宝 ("🐥") +Unicode 中每一个字符都可以被解释为一个或多个 unicode 标量。字符的 unicode 标量是一个唯一的21位数字(和名称),例如 `U+0061` 表示小写的拉丁字母A ("a"),`U+1F425` 表示 ("🐥") 当 Unicode 字符串被写进文本文件或其他存储结构当中,这些 unicode 标量将会按照 Unicode 定义的集中格式之一进行编码。其包括 `UTF-8` (以8位代码单元进行编码) 和 `UTF-16` (以16位代码单元进行编码)。