avatar
童琦杰
Feb 16, 2017Technology

Swift - 基础

本篇文章只对Swift语言进行大概的认识,其中涉及的内容只包含Swfit语言中较为特殊的特性,并且不容易记忆的部分。

数据类型

Swift提供了几种基本数据类型,整数类型Int,浮点数类型DoubleFloat,布尔类型Bool,以及字符串类型String。当然,Swift还提供了三种集合类型,数组类型Array,集合类型Set,字典类型Dictionary

常量及变量定义

Swift中使用关键字let声明常量,使用关键字var声明变量。允许在一行内声明多个常量或变量,使用逗号分隔。

swift
var x = 0.0, y = 0.0, z = 0.0

在声明常量或变量时,允许提供类型标记来指明常量或变量的数据类型。

swift
var welcomeMessage: String

也可以在一行内声明多个相同类型的常量或变量。

swift
var red, green, blue: Double

在声明常量或变量时,若已经提供了初始值,那么Swift能自动推断出数据类型。很多时候是这样的,但是也存在一些情况需要显式地进行类型标记。

可以使用几乎所有的字符(包括Unicode字符)来命名常量或变量,除了空格符、数学符号、箭头、无效的Unicode字符、连字符、制表符。

如果需要定义一个与Swift关键字相同名字的常量或变量,需要使用单引号对`将这个名字包含。

数值字面量

对于整数类型字面量,其包含以下几种前缀,十进制无前缀、二进制前缀0b,八进制0o,十六进制0x。

swift
let decimalInteger = 17
let binaryInteger = 0b10001
let octalInteger = 0o21
let hexadecimalInteger = 0x11

对于浮点数类型字面量,其包含以下几种前缀,十进制无前缀,十六进制0x。十进制浮点数也可以包含一个指数(基数为10),由e(大写小写均可)指定。十六进制浮点数也可以包含一个指数(基数为2),由p(大写小写均可)指定。

swift
let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadecimalDouble = 0xC.3p0

数值字面量也可以包含额外的格式化字符。对于整数和浮点数,都允许包含额外的0和下划线来方便阅读。

swift
let paddedDouble = 000123.456
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1

字符串

Swift支持多行字符串字面量,使用三个双引号。

swift
let quotation = """
The White Rabbit put on his spectacles.  "Where shall I begin,
please your Majesty?" he asked.

"Begin at the beginning," the King said gravely, "and go on
till you come to the end; then stop."
"""

使用\()实现字符串插值

swift
let multiplier = 3
let message = "\(multiplier) times 2.5 is \(Double(multiplier) * 2.5)"

类型别名

你可以给现有的类型定义类型别名,使用关键字typealias

元祖类型

元组允许将多个值组合成单个复合值,其中在一个元祖中各个值可以是不同类型。

swift
let http404Error = (404, "Not Found")

当然,也允许将元祖内容拆分成几个独立的常量或变量,这样方便用户访问其内容。

swift
let (statusCode, statusMessage) = http404Error

另外,如果你对元祖中部分值不感兴趣,则可以忽略这些值,使用下划线_代表需要忽略的值。

swift
let (justTheStatusCode, _) = http404Error

还有一种访问元祖值的方式,使用索引值访问,索引值从0开始。

swift
let statusCode = http404Error.0
let statusMessage = http404Error.1

在定义一个元祖值时,支持对每个值进行命名,这样可以通过命名的值进行元祖值的访问。

swift
let http200Status = (statusCode: 200, description: "Ok")
let statusCode = http200Status.statusCode

可选类型绑定

可选类型绑定(Optional Binding)用于监测一个可选类型值是否包含一个值,并且将可用值定义为一个常量或变量,只允许在if语句和while语句中使用。

swift
if let actualNumber = Int(possibleNumber) {
}

你可以在单个if语句中包含多个可选类型绑定,并使用where分句附加一个判断条件。

swift
if let firstNumber = Int("4"), secondNumber = Int("42") where firstNumber < secondNumber {
}

范围操作符

...: 闭合范围操作符

..<: 半开范围操作符

a...b: 包含a和b,[a,b]

a..<b: 包含a,不包含b,[a,b)

a...: 单边范围,包含a,[a,+Inf)

...a: 单边范围,包含a,(-Inf,a]

..<a: 单边范围,不包含a,(-Inf,a)

© 2015-2022 tongqijie.com 版权所有沪ICP备17000682号