modify [a swift tour] code style

This commit is contained in:
stanzhai
2014-06-14 15:20:48 +08:00
parent 8519bfad0a
commit 3495061b0a
2 changed files with 362 additions and 381 deletions

View File

@ -1,5 +1,4 @@
> 翻译numbbbbb
> 校对yeahdongcn
# 关于 Swift

View File

@ -1,5 +1,5 @@
> 翻译numbbbbb
> 校对shinyzhu
> 校对shinyzhu, stanzhai
# Swift 初见
@ -26,7 +26,6 @@
这个教程会通过一系列编程例子来让你对 Swift 有初步了解,如果你有什么不理解的地方也不用担心——任何本章介绍的内容都会在后面的章节中详细讲解。
> 注意:
> 为了获得最好的体验,在 Xcode 当中使用代码预览功能。代码预览功能可以让你编辑代码并实时看到运行结果。
<a name="simple_values"></a>
@ -51,7 +50,6 @@
```
> 练习:
>
> 创建一个常量,显式指定类型为`Float`并指定初始值为4。
值永远不会被隐式转换为其他类型。如果你需要把一个值转换成其他类型,请显式转换。
@ -62,7 +60,6 @@
let widthLabel = label + String(width)
```
> 练习:
>
> 删除最后一行中的`String`,错误提示是什么?
有一种更简单的把值转换成字符串的方法:把值写到括号中,并且在括号之前写一个反斜杠。例如:
@ -75,7 +72,6 @@
```
> 练习:
>
> 使用`\()`来把一个浮点计算转换成字符串,并加上某人的名字,和他打个招呼。
使用方括号`[]`来创建数组和字典并使用下标或者键key来访问元素。
@ -140,7 +136,6 @@
```
> 练习:
>
> 把`optionalName`改成`nil`greeting会是什么添加一个`else`语句,当`optionalName`是`nil`时给greeting赋一个不同的值。
如果变量的可选值是`nil`,条件会判断为`false`,大括号中的代码会被跳过。如果不是`nil`,会将值赋给`let`后面的常量,这样代码块中就可以使用这个值了。
@ -162,7 +157,6 @@
```
> 练习:
>
> 删除`default`语句,看看会有什么错误?
运行`switch`中匹配到的子句之后,程序会退出`switch`语句,并不会继续向下运行,所以不需要在每个子句结尾写`break`
@ -187,7 +181,6 @@
```
> 练习:
>
> 添加另一个变量来记录哪种类型的数字是最大的。
使用`while`来重复运行一段代码直到不满足条件。循环条件可以在开头也可以在结尾。
@ -237,7 +230,6 @@
```
> 练习:
>
> 删除`day`参数,添加一个参数来表示今天吃了什么午饭。
使用一个元组来返回多个值。
@ -264,7 +256,6 @@
```
> 练习:
>
> 写一个计算参数平均值的函数。
函数可以嵌套。被嵌套的函数可以访问外侧函数的变量,你可以使用嵌套函数来重构一个太长或者太复杂的函数。
@ -323,7 +314,6 @@
```
> 练习:
>
> 重写闭包,对所有奇数返回 0.
有很多种创建闭包的方法。如果一个闭包的类型已知,比如作为一个回调函数,你可以忽略参数的类型和返回值。单个语句闭包会把它语句的值当做结果返回。
@ -353,7 +343,6 @@
```
> 练习:
>
> 使用`let`添加一个常量属性,再添加一个接收一个参数的方法。
要创建一个类的实例,在类名后面加上括号。使用点语法来访问实例的属性和方法。
@ -413,7 +402,6 @@
```
> 练习:
>
> 创建`NamedShape`的另一个子类`Circle`,构造器接收两个参数,一个是半径一个是名称,实现`area`和`describe`方法。
属性可以有 getter 和 setter 。
@ -533,7 +521,6 @@
```
> 练习:
>
> 写一个函数,通过比较它们的原始值来比较两个`Rank`值。
在上面的例子中,枚举原始值的类型是`Int`,所以你只需要设置第一个原始值。剩下的原始值会按照顺序赋值。你也可以使用字符串或者浮点数作为枚举的原始值。
@ -570,7 +557,6 @@
```
> 练习:
>
> 给`Suit`添加一个`color`方法,对`spades`和`clubs`返回“black”对`hearts`和`diamonds`返回“red”。
注意,有两种方式可以引用`Hearts`成员:给`hearts`常量赋值时,枚举成员`Suit.Hearts`需要用全名来引用,因为常量没有显式指定类型。在`switch`里,枚举成员使用缩写`.Hearts`来引用,因为`self`的值已经知道是一个`suit`。已知变量类型的情况下你可以使用缩写。
@ -592,7 +578,6 @@
```
> 练习:
>
> 给`Card`添加一个方法,创建一副完整的扑克牌并把每张牌的 rank 和 suit 对应起来。
一个枚举成员的实例可以有实例值。相同枚举成员的实例可以有不同的值。创建实例的时候传入值即可。实例值和原始值是不同的:枚举成员的原始值对于所有实例都是相同的,而且你是在定义枚举的时候设置原始值。
@ -617,7 +602,6 @@
```
> 练习:
>
> 给`ServerResponse`和`switch`添加第三种情况。
注意如何从`ServerResponse`中提取日升和日落时间。
@ -660,7 +644,6 @@
```
> 练习:
>
> 写一个实现这个接口的枚举。
注意声明`SimpleStructure`时候`mutating`关键字用来标记一个会修改结构体的方法。`SimpleClass`的声明不需要标记任何方法因为类中的方法经常会修改类。
@ -738,7 +721,6 @@
```
> 练习:
>
> 修改`anyCommonElements`函数来创建一个函数,返回一个数组,内容是两个序列的共有元素。
简单起见,你可以忽略`where`,只在冒号后面写接口或者类名。` <T: Equatable>``<T where T: Equatable>`是等价的。