Merge pull request #375 from yakirChen/develop

三种集合类型 Array , Set , Dictionary
This commit is contained in:
梁杰
2015-06-15 07:06:22 +08:00
3 changed files with 21 additions and 20 deletions

View File

@ -4,7 +4,7 @@
# 关于 Swift # 关于 Swift
----------------- -----------------
Swift 是一种新的编程语言,用于编写 iOS 和 OS X 应用。Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制。Swift 采用安全的编程模式并添加了很多新特性这将使编程更简单更灵活也更有趣。Swift 是基于成熟而且倍受喜爱的 Cocoa 和 Cocoa Touch 框架,它的降临将重新定义软件开发。 Swift 是一种新的编程语言,用于编写 iOSOS X 和 watchOS应用程序。Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制。Swift 采用安全的编程模式并添加了很多新特性这将使编程更简单更灵活也更有趣。Swift 是基于成熟而且倍受喜爱的 Cocoa 和 Cocoa Touch 框架,它的降临将重新定义软件开发。
Swift 的开发从很久之前就开始了。为了给 Swift 打好基础苹果公司改进了编译器调试器和框架结构。我们使用自动引用计数Automatic Reference Counting, ARC来简化内存管理。我们在 Foundation 和 Cocoa 的基础上构建框架栈并将其标准化。Objective-C 本身支持块、集合语法和模块,所以框架可以轻松支持现代编程语言技术。正是得益于这些基础工作,我们现在才能发布这样一个用于未来苹果软件开发的新语言。 Swift 的开发从很久之前就开始了。为了给 Swift 打好基础苹果公司改进了编译器调试器和框架结构。我们使用自动引用计数Automatic Reference Counting, ARC来简化内存管理。我们在 Foundation 和 Cocoa 的基础上构建框架栈并将其标准化。Objective-C 本身支持块、集合语法和模块,所以框架可以轻松支持现代编程语言技术。正是得益于这些基础工作,我们现在才能发布这样一个用于未来苹果软件开发的新语言。
@ -14,4 +14,4 @@ Swift 对于初学者来说也很友好。它是第一个既满足工业标准
Swift 将现代编程语言的精华和苹果工程师文化的智慧结合了起来。编译器对性能进行了优化编程语言对开发进行了优化两者互不干扰鱼与熊掌兼得。Swift 既可以用于开发 “hello, world” 这样的小程序,也可以用于开发一套完整的操作系统。所有的这些特性让 Swift 对于开发者和苹果来说都是一项值得的投资。 Swift 将现代编程语言的精华和苹果工程师文化的智慧结合了起来。编译器对性能进行了优化编程语言对开发进行了优化两者互不干扰鱼与熊掌兼得。Swift 既可以用于开发 “hello, world” 这样的小程序,也可以用于开发一套完整的操作系统。所有的这些特性让 Swift 对于开发者和苹果来说都是一项值得的投资。
Swift 是编写 iOS 和 OS X 应用的极佳手段,并将伴随着新的特性和功能持续演进。我们对 Swift 充满信心,你还在等什么! Swift 是编写 iOSOS X 和 watchOS应用的极佳手段,并将伴随着新的特性和功能持续演进。我们对 Swift 充满信心,你还在等什么!

View File

@ -18,7 +18,7 @@
通常来说编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”。在 Swift 中,可以用一行代码实现: 通常来说编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”。在 Swift 中,可以用一行代码实现:
```swift ```swift
println("Hello, world") print("Hello, world")
``` ```
如果你写过 C 或者 Objective-C 代码,那你应该很熟悉这种形式——在 Swift 中,这行代码就是一个完整的程序。你不需要为了输入输出或者字符串处理导入一个单独的库。全局作用域中的代码会被自动当做程序的入口点,所以你也不需要`main`函数。你同样不需要在每个语句结尾写上分号。 如果你写过 C 或者 Objective-C 代码,那你应该很熟悉这种形式——在 Swift 中,这行代码就是一个完整的程序。你不需要为了输入输出或者字符串处理导入一个单独的库。全局作用域中的代码会被自动当做程序的入口点,所以你也不需要`main`函数。你同样不需要在每个语句结尾写上分号。
@ -119,7 +119,7 @@ for score in individualScores {
teamScore += 1 teamScore += 1
} }
} }
teamScore print(teamScore)
``` ```
`if`语句中,条件必须是一个布尔表达式——这意味着像`if score { ... }`这样的代码将报错,而不会隐形地与 0 做对比。 `if`语句中,条件必须是一个布尔表达式——这意味着像`if score { ... }`这样的代码将报错,而不会隐形地与 0 做对比。
@ -128,7 +128,7 @@ teamScore
```swift ```swift
var optionalString: String? = "Hello" var optionalString: String? = "Hello"
optionalString == nil print(optionalString == nil)
var optionalName: String? = "John Appleseed" var optionalName: String? = "John Appleseed"
var greeting = "Hello!" var greeting = "Hello!"
@ -161,6 +161,8 @@ default:
> 练习: > 练习:
> 删除`default`语句,看看会有什么错误? > 删除`default`语句,看看会有什么错误?
声明'let'可用于匹配某部分固定值的模式
运行`switch`中匹配到的子句之后,程序会退出`switch`语句,并不会继续向下运行,所以不需要在每个子句结尾写`break` 运行`switch`中匹配到的子句之后,程序会退出`switch`语句,并不会继续向下运行,所以不需要在每个子句结尾写`break`
你可以使用`for-in`来遍历字典,需要两个变量来表示每个键值对。字典是一个无序的集合,所以他们的键和值以任意顺序迭代结束。 你可以使用`for-in`来遍历字典,需要两个变量来表示每个键值对。字典是一个无序的集合,所以他们的键和值以任意顺序迭代结束。
@ -179,7 +181,7 @@ for (kind, numbers) in interestingNumbers {
} }
} }
} }
largest print(largest)
``` ```
> 练习: > 练习:
@ -192,13 +194,13 @@ var n = 2
while n < 100 { while n < 100 {
n = n * 2 n = n * 2
} }
n print(n)
var m = 2 var m = 2
do { do {
m = m * 2 m = m * 2
} while m < 100 } while m < 100
m print(m)
``` ```
你可以在循环中使用`..<`来表示范围,也可以使用传统的写法,两者是等价的: 你可以在循环中使用`..<`来表示范围,也可以使用传统的写法,两者是等价的:
@ -208,13 +210,13 @@ var firstForLoop = 0
for i in 0..<4 { for i in 0..<4 {
firstForLoop += i firstForLoop += i
} }
firstForLoop print(firstForLoop)
var secondForLoop = 0 var secondForLoop = 0
for var i = 0; i < 4; ++i { for var i = 0; i < 4; ++i {
secondForLoop += i secondForLoop += i
} }
secondForLoop print(secondForLoop)
``` ```
使用`..<`创建的范围不包含上界,如果想包含的话需要使用`...` 使用`..<`创建的范围不包含上界,如果想包含的话需要使用`...`
@ -228,7 +230,7 @@ secondForLoop
func greet(name: String, day: String) -> String { func greet(name: String, day: String) -> String {
return "Hello \(name), today is \(day)." 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) return (min, max, sum)
} }
let statistics = calculateStatistics([5, 3, 100, 3, 9]) let statistics = calculateStatistics([5, 3, 100, 3, 9])
statistics.sum print(statistics.sum)
statistics.2 print(statistics.2)
``` ```
函数可以带有可变个数的参数,这些参数在函数内表现为数组的形式: 函数可以带有可变个数的参数,这些参数在函数内表现为数组的形式:
@ -317,7 +319,7 @@ func lessThanTen(number: Int) -> Bool {
return number < 10 return number < 10
} }
var numbers = [20, 19, 7, 12] var numbers = [20, 19, 7, 12]
hasAnyMatches(numbers, lessThanTen) hasAnyMatches(numbers,condition: lessThanTen)
``` ```
函数实际上是一种特殊的闭包,你可以使用`{}`来创建一个匿名闭包。使用`in`将参数和返回值类型声明与闭包函数体进行分离。 函数实际上是一种特殊的闭包,你可以使用`{}`来创建一个匿名闭包。使用`in`将参数和返回值类型声明与闭包函数体进行分离。
@ -344,7 +346,7 @@ mappedNumbers
```swift ```swift
let sortedNumbers = sorted(numbers) { $0 > $1 } let sortedNumbers = sorted(numbers) { $0 > $1 }
sortedNumbers print(sortedNumbers)
``` ```
<a name="objects_and_classes"></a> <a name="objects_and_classes"></a>
@ -449,9 +451,9 @@ class EquilateralTriangle: NamedShape {
} }
} }
var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle") var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle")
triangle.perimeter print(riangle.perimeter)
triangle.perimeter = 9.9 triangle.perimeter = 9.9
triangle.sideLength print(triangle.sideLength)
``` ```
`perimeter`的 setter 中,新值的名字是`newValue`。你可以在`set`之后显式的设置一个名字。 `perimeter`的 setter 中,新值的名字是`newValue`。你可以在`set`之后显式的设置一个名字。

View File

@ -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) > 校对:[lslxdx](https://github.com/lslxdx)
# 基础部分 # 基础部分
@ -22,7 +22,7 @@
Swift 是一门进行 iOS 和 OS X 应用开发的新语言。然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的。 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 中,如果你要处理的值不需要改变,那使用常量可以让你的代码更加安全并且更清晰地表达你的意图。 就像 C 语言一样Swift 使用变量来进行存储并通过变量名来关联值。在 Swift 中,广泛的使用着值不可变的变量,它们就是常量,而且比 C 语言的常量更强大。在 Swift 中,如果你要处理的值不需要改变,那使用常量可以让你的代码更加安全并且更清晰地表达你的意图。
@ -693,4 +693,3 @@ assert(age >= 0)
> 注意: > 注意:
断言可能导致你的应用终止运行,所以你应当仔细设计你的代码来让非法条件不会出现。然而,在你的应用发布之前,有时候非法条件可能出现,这时使用断言可以快速发现问题。 断言可能导致你的应用终止运行,所以你应当仔细设计你的代码来让非法条件不会出现。然而,在你的应用发布之前,有时候非法条件可能出现,这时使用断言可以快速发现问题。