diff --git a/source/chapter2/01_The_Basics.md b/source/chapter2/01_The_Basics.md index 84e4c1db..5b24eb62 100755 --- a/source/chapter2/01_The_Basics.md +++ b/source/chapter2/01_The_Basics.md @@ -13,11 +13,11 @@ > 校对:[shanks](http://codebuild.me),[overtrue](https://github.com/overtrue) > > 2.2 -> 校对:[SketchK](https://github.com/SketchK) +> 校对:[SketchK](https://github.com/SketchK) > > 3.0 -> 校对:[CMB](https://github.com/chenmingbiao) -> +> 校对:[CMB](https://github.com/chenmingbiao) +> > 版本日期:2016-09-13 本页包含内容: @@ -231,7 +231,7 @@ Swift 提供了8,16,32和64位的有符号和无符号整数类型。这些 ```swift let minValue = UInt8.min // minValue 为 0,是 UInt8 类型 let maxValue = UInt8.max // maxValue 为 255,是 UInt8 类型 -``` +``` `min` 和 `max` 所传回值的类型,正是其所对的整数类型(如上例UInt8, 所传回的类型是UInt8),可用在表达式中相同类型值旁。 @@ -328,12 +328,12 @@ let hexadecimalInteger = 0x11 // 十六进制的17 浮点字面量可以是十进制(没有前缀)或者是十六进制(前缀是 `0x` )。小数点两边必须有至少一个十进制数字(或者是十六进制的数字)。十进制浮点数也可以有一个可选的指数(exponent),通过大写或者小写的 `e` 来指定;十六进制浮点数必须有一个指数,通过大写或者小写的 `p` 来指定。 -如果一个十进制数的指数为 `exp`,那这个数相当于基数和10^exp的乘积: +如果一个十进制数的指数为 `exp`,那这个数相当于基数和10^exp的乘积: * `1.25e2` 表示 1.25 × 10^2,等于 `125.0`。 * `1.25e-2` 表示 1.25 × 10^-2,等于 `0.0125`。 -如果一个十六进制数的指数为`exp`,那这个数相当于基数和2^exp的乘积: +如果一个十六进制数的指数为`exp`,那这个数相当于基数和2^exp的乘积: * `0xFp2` 表示 15 × 2^2,等于 `60.0`。 * `0xFp-2` 表示 15 × 2^-2,等于 `3.75`。 @@ -606,7 +606,7 @@ if convertedNumber != nil { print("convertedNumber contains some integer value.") } // 输出 "convertedNumber contains some integer value." -``` +``` 当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号(`!`)来获取值。这个惊叹号表示“我知道这个可选有值,请使用它。”这被称为可选值的*强制解析(forced unwrapping)*: @@ -654,25 +654,25 @@ if let actualNumber = Int(possibleNumber) { 你可以在可选绑定中使用常量和变量。如果你想在`if`语句的第一个分支中操作 `actualNumber` 的值,你可以改成 `if var actualNumber`,这样可选类型包含的值就会被赋给一个变量而非常量。 -你可以包含多个可选绑定或多个布尔条件在一个 `if` 语句中,只要使用逗号分开就行。如果所有可选绑定的值为 `nil` 或者所有布尔条件语句都为 `false`,这样整个 `if` 条件判断都是为 `false`,这时你就需要使用嵌套 `if` 条件语句来处理,如下所示: +你可以包含多个可选绑定或多个布尔条件在一个 `if` 语句中,只要使用逗号分开就行。只要有任意一个可选绑定的值为`nil`,或者任意一个布尔条件为`false`,则整个`if`条件判断为`false`,这时你就需要使用嵌套 `if` 条件语句来处理,如下所示: ```swift -if let firstNumber = Int("4"), let secondNumber = Int("42"), firstNumber < secondNumber && secondNumber < 100 { - print("\(firstNumber) < \(secondNumber) < 100") -} -// Prints "4 < 42 < 100" - -if let firstNumber = Int("4") { - if let secondNumber = Int("42") { - if firstNumber < secondNumber && secondNumber < 100 { - print("\(firstNumber) < \(secondNumber) < 100") - } - } -} +if let firstNumber = Int("4"), let secondNumber = Int("42"), firstNumber < secondNumber && secondNumber < 100 { + print("\(firstNumber) < \(secondNumber) < 100") +} // Prints "4 < 42 < 100" -``` - -> 注意: + +if let firstNumber = Int("4") { + if let secondNumber = Int("42") { + if firstNumber < secondNumber && secondNumber < 100 { + print("\(firstNumber) < \(secondNumber) < 100") + } + } +} +// Prints "4 < 42 < 100" +``` + +> 注意: > 在 `if` 条件语句中使用常量和变量来创建一个可选绑定,仅在 `if` 语句的句中(`body`)中才能获取到值。相反,在 `guard` 语句中使用常量和变量来创建一个可选绑定,仅在 `guard` 语句外且在语句后才能获取到值,请参考[控制流](./05_Control_Flow#early_exit.html)。 @@ -752,17 +752,17 @@ do { 这里有一个错误处理如何用来应对不同错误条件的例子。 ```swift -func makeASandwich() throws { - // ... -} - -do { - try makeASandwich() - eatASandwich() -} catch SandwichError.outOfCleanDishes { - washDishes() -} catch SandwichError.missingIngredients(let ingredients) { - buyGroceries(ingredients) +func makeASandwich() throws { + // ... +} + +do { + try makeASandwich() + eatASandwich() +} catch SandwichError.outOfCleanDishes { + washDishes() +} catch SandwichError.missingIngredients(let ingredients) { + buyGroceries(ingredients) } ```