- 变量
- 命名方式:
var a = 1
或者var a: Int = 1
。 - 命名可以不指定类型,因为Swift可推测变量类型。(建议不需标明类型)
- 一般变量声明
var
和常量声明let
。 - 禁止变量进行默认类型转换,比如
var greeting = "Hello"
,然后greeting = 5
。
- 字符串
- 对于字符串的操作、函数并引入其他库来使用函数。
- 分号
- 分号可加可不加,一般情况下效果由换行替代。但如果语句为同一行则必须加分号来间隔。(建议不需加上分号)
- 数字类型与转换
- Swift一般会根据输入的数值大小自动为变量选择最为合适的类型。
- 可以用_来作为千位分隔符:
let million 1_000_000
。 - 所有数值类型的转换都必须明确地表示。Swift库内函数一般进行操作的两个数都是同样类型。即使是
Int
乘以Double
类型也必须明确标明,如Double(radius) * Double(radius) * pi
。 -
cmd+click
可以查看库函数。 - 另外一个Swift的安全措施是大小检查。如
var overflow = Int.max + 1
,很多编程语言的答案是一个负数,但Swift会当做Runtime error
。
- 布尔类型
- 不能用非零数字当做
true
,在Swift中,必须使用Bool
类型,否则库函数不接受。
- 元组
- 元组的声明:
var address = (1, "A")
。
显式声明:var address: (Int, String) = (1, "A")
。
元组的元素的使用:println(address.0)
。 - Swift的安全措施:调用元组中不存在的元素会导致编译错误。
- 可以将元组中的元素提取出来成单个元素:
let (house, street) = adress
。 - 可以给元组中的元素命名:
var address = (number: 1, street: "A")
。
使用命名的元素:println(address.number)
。 - 打印的时候可以使用简化的语句:
pringln("I live at \(house), \(street)")
,这种方式成为string interpolation(字符串式插值)。
或者使用:let str = I live at \(house), \(street)
,然后println(str)。
- 循环
- for循环语法:
for i in 1...5 {}
。...
是闭区间操作符,还可以使用..<
,这个操作符是半开半闭区间操作符。 -
1...5
是一个独立结构,可以使用var range = 1...5
,for i in range{...}
来进行循环。这里range的结构实际上是:var range = Range(start: 1, end: 6)
。 - range可以不仅仅是Range结构类型,还可以是数组、键-值对,也可以是String,如
for i in "Swift" { println(i) }
。这些类型都是可以枚举的。 - while循环:
var i = 0
while i < 5 {
println("\(i) - \(greeting)")
i++
}
- if语句
if i ==5 {
println("...")
} else {
println("...")
}
- if语句的判断条件必须是Bool类型。
- if语句即使只有一行代码,也必须用大括号括起来。
- switch语句
- 语法:
var direction = "up"
switch direction {
case "down":
println(...)
case "up":
println(...)
default:
println(...)
}
- Swift中的Switch语句,可以使用任意类型而不是基本类来匹配,并且可以省略break关键字。
- 如果没有加上
default
关键字,则Swift会报错,并提醒最好加上default
语句。 - case语句可以这样使用:
case: "down", "up":
case 1..<10:
还可以将匹配条件换成元组。