fixed #661
This commit is contained in:
@ -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 提供了8,16,32和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)
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user