This commit is contained in:
shanks
2016-09-23 23:12:19 +08:00
committed by GitHub
parent 50f692c277
commit fa3f0bc8ac

View File

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