diff --git a/source/chapter1/01_swift.md b/source/chapter1/01_swift.md index c598ce56..d00378e4 100755 --- a/source/chapter1/01_swift.md +++ b/source/chapter1/01_swift.md @@ -4,7 +4,7 @@ # 关于 Swift ----------------- -Swift 是一种新的编程语言,用于编写 iOS 和 OS X 应用。Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制。Swift 采用安全的编程模式并添加了很多新特性,这将使编程更简单,更灵活,也更有趣。Swift 是基于成熟而且倍受喜爱的 Cocoa 和 Cocoa Touch 框架,它的降临将重新定义软件开发。 +Swift 是一种新的编程语言,用于编写 iOS,OS X 和 watchOS应用程序。Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制。Swift 采用安全的编程模式并添加了很多新特性,这将使编程更简单,更灵活,也更有趣。Swift 是基于成熟而且倍受喜爱的 Cocoa 和 Cocoa Touch 框架,它的降临将重新定义软件开发。 Swift 的开发从很久之前就开始了。为了给 Swift 打好基础,苹果公司改进了编译器,调试器和框架结构。我们使用自动引用计数(Automatic Reference Counting, ARC)来简化内存管理。我们在 Foundation 和 Cocoa 的基础上构建框架栈并将其标准化。Objective-C 本身支持块、集合语法和模块,所以框架可以轻松支持现代编程语言技术。正是得益于这些基础工作,我们现在才能发布这样一个用于未来苹果软件开发的新语言。 @@ -14,4 +14,4 @@ Swift 对于初学者来说也很友好。它是第一个既满足工业标准 Swift 将现代编程语言的精华和苹果工程师文化的智慧结合了起来。编译器对性能进行了优化,编程语言对开发进行了优化,两者互不干扰,鱼与熊掌兼得。Swift 既可以用于开发 “hello, world” 这样的小程序,也可以用于开发一套完整的操作系统。所有的这些特性让 Swift 对于开发者和苹果来说都是一项值得的投资。 -Swift 是编写 iOS 和 OS X 应用的极佳手段,并将伴随着新的特性和功能持续演进。我们对 Swift 充满信心,你还在等什么! +Swift 是编写 iOS,OS X 和 watchOS应用的极佳手段,并将伴随着新的特性和功能持续演进。我们对 Swift 充满信心,你还在等什么! diff --git a/source/chapter1/02_a_swift_tour.md b/source/chapter1/02_a_swift_tour.md index 366d5d77..c6f86e5b 100755 --- a/source/chapter1/02_a_swift_tour.md +++ b/source/chapter1/02_a_swift_tour.md @@ -18,7 +18,7 @@ 通常来说,编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”。在 Swift 中,可以用一行代码实现: ```swift -println("Hello, world") +print("Hello, world") ``` 如果你写过 C 或者 Objective-C 代码,那你应该很熟悉这种形式——在 Swift 中,这行代码就是一个完整的程序。你不需要为了输入输出或者字符串处理导入一个单独的库。全局作用域中的代码会被自动当做程序的入口点,所以你也不需要`main`函数。你同样不需要在每个语句结尾写上分号。 @@ -119,7 +119,7 @@ for score in individualScores { teamScore += 1 } } -teamScore +print(teamScore) ``` 在`if`语句中,条件必须是一个布尔表达式——这意味着像`if score { ... }`这样的代码将报错,而不会隐形地与 0 做对比。 @@ -128,7 +128,7 @@ teamScore ```swift var optionalString: String? = "Hello" -optionalString == nil +print(optionalString == nil) var optionalName: String? = "John Appleseed" var greeting = "Hello!" @@ -161,6 +161,8 @@ default: > 练习: > 删除`default`语句,看看会有什么错误? +声明'let'可用于匹配某部分固定值的模式 + 运行`switch`中匹配到的子句之后,程序会退出`switch`语句,并不会继续向下运行,所以不需要在每个子句结尾写`break`。 你可以使用`for-in`来遍历字典,需要两个变量来表示每个键值对。字典是一个无序的集合,所以他们的键和值以任意顺序迭代结束。 @@ -179,7 +181,7 @@ for (kind, numbers) in interestingNumbers { } } } -largest +print(largest) ``` > 练习: @@ -192,13 +194,13 @@ var n = 2 while n < 100 { n = n * 2 } -n +print(n) var m = 2 do { m = m * 2 } while m < 100 -m +print(m) ``` 你可以在循环中使用`..<`来表示范围,也可以使用传统的写法,两者是等价的: @@ -208,13 +210,13 @@ var firstForLoop = 0 for i in 0..<4 { firstForLoop += i } -firstForLoop +print(firstForLoop) var secondForLoop = 0 for var i = 0; i < 4; ++i { secondForLoop += i } -secondForLoop +print(secondForLoop) ``` 使用`..<`创建的范围不包含上界,如果想包含的话需要使用`...`。 @@ -228,7 +230,7 @@ secondForLoop func greet(name: String, day: String) -> String { return "Hello \(name), today is \(day)." } -greet("Bob", "Tuesday") +greet("Bob",day: "Tuesday") ``` > 练习: @@ -254,8 +256,8 @@ func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int) { return (min, max, sum) } let statistics = calculateStatistics([5, 3, 100, 3, 9]) -statistics.sum -statistics.2 +print(statistics.sum) +print(statistics.2) ``` 函数可以带有可变个数的参数,这些参数在函数内表现为数组的形式: @@ -317,7 +319,7 @@ func lessThanTen(number: Int) -> Bool { return number < 10 } var numbers = [20, 19, 7, 12] -hasAnyMatches(numbers, lessThanTen) +hasAnyMatches(numbers,condition: lessThanTen) ``` 函数实际上是一种特殊的闭包,你可以使用`{}`来创建一个匿名闭包。使用`in`将参数和返回值类型声明与闭包函数体进行分离。 @@ -344,7 +346,7 @@ mappedNumbers ```swift let sortedNumbers = sorted(numbers) { $0 > $1 } -sortedNumbers +print(sortedNumbers) ``` @@ -449,9 +451,9 @@ class EquilateralTriangle: NamedShape { } } var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle") -triangle.perimeter +print(riangle.perimeter) triangle.perimeter = 9.9 -triangle.sideLength +print(triangle.sideLength) ``` 在`perimeter`的 setter 中,新值的名字是`newValue`。你可以在`set`之后显式的设置一个名字。 diff --git a/source/chapter2/01_The_Basics.md b/source/chapter2/01_The_Basics.md index f00b1bbb..de1e3db6 100755 --- a/source/chapter2/01_The_Basics.md +++ b/source/chapter2/01_The_Basics.md @@ -1,4 +1,4 @@ -> 翻译:[numbbbbb](https://github.com/numbbbbb), [lyuka](https://github.com/lyuka), [JaySurplus](https://github.com/JaySurplus) +> 翻译:[numbbbbb](https://github.com/numbbbbb), [lyuka](https://github.com/lyuka), [JaySurplus](https://github.com/JaySurplus) > 校对:[lslxdx](https://github.com/lslxdx) # 基础部分 @@ -22,7 +22,7 @@ Swift 是一门进行 iOS 和 OS X 应用开发的新语言。然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的。 -Swift 包含了 C 和 Objective-C 上所有基础数据类型,`Int`表示整型值;`Double`和`Float`表示浮点型值;`Bool`是布尔型值;`String`是文本型数据。Swift 还提供了两个基本的集合类型,`Array`和`Dictionary`,详见[集合类型](04_Collection_Types.html)。 +Swift 包含了 C 和 Objective-C 上所有基础数据类型,`Int`表示整型值;`Double`和`Float`表示浮点型值;`Bool`是布尔型值;`String`是文本型数据。Swift 还提供了三个基本的集合类型,`Array`,`Set`和`Dictionary`,详见[集合类型](04_Collection_Types.html)。 就像 C 语言一样,Swift 使用变量来进行存储并通过变量名来关联值。在 Swift 中,广泛的使用着值不可变的变量,它们就是常量,而且比 C 语言的常量更强大。在 Swift 中,如果你要处理的值不需要改变,那使用常量可以让你的代码更加安全并且更清晰地表达你的意图。 @@ -693,4 +693,3 @@ assert(age >= 0) > 注意: 断言可能导致你的应用终止运行,所以你应当仔细设计你的代码来让非法条件不会出现。然而,在你的应用发布之前,有时候非法条件可能出现,这时使用断言可以快速发现问题。 -