Swift 是一门开发 iOS, macOS, watchOS 和 tvOS 应用的语言
基础数据类型:整型(Int); 浮点型(Double or Float); 布尔型(Bool); 文本型(String)
基本的集合:数组(Array)、集合(Set)和字典(Dictionary)
高阶数据类型:元组(Tuple)
常量和变量
常量设定之后就不能更改;变量可以随意更改
声明:常量用let;变量用var
//声明一个 constant 常量,值是 10let constant = 10 //声明一个 variable 变量,初始值 10 var variable = 10 //将 variable 改为 20variable = 20//声明多个变量 用“,”隔开var a=1, b=2, c=3
注释:
// 单行注释/*多行注释*/
命名:包含几乎所有的字符
let a = 123let 汉字 = “汉字”let = “表情”
注意:
命名不能包含数学符号,箭头,非法的Unicode 码位,连线与制表符。不可以数字开头,其他地方可以包含数字。
输出:print()
// 输出print(“输出”)// 123print(a)// 输出 is 123print(” 输出 is (a)”)
类型推断和安全
- 推断:根据你赋值的值来推断出是什么类型的数据
- 安全:如果你的代码需要一个 String,你绝对不可能让你传入其他类型的数据
// a 会被推测为 Int 类型let a = 123// b 会被推测为 String 类型let b = “123”// c 会被推测为 浮点 类型let c =3.1415926
整数
Swift 提供了8、16、32和64位的有符号和无符号整数类型
Int :存储的整数范围( -2,147,483,648 ~ 2,147,483,647),在一般情况下够用了
- 在32位平台上,Int 和 Int32 长度相同。
- 在64位平台上,Int 和 Int64 长度相同。
UInt:特殊的无符号类型(尽量不要使用 UInt)
- 在32位平台上,Int 和 Int32 长度相同。
- 在64位平台上,Int 和 Int64 长度相同。
浮点数
有小数部分的数字: 3.1415926、 -3.1415926;比整型表示的范围更大
- Double 64 位,精度要求高使用的类型;至少有 15 位小数
- Float 32位,精度要求不高使用的类型;只有 6 位小数
布尔
Swift 有两个布尔常量,true 和 false
let a = truelet b = false
布尔使用
let a = trueif a { print(“真”)} else { print(“假”)}
别名
typealias 关键字来定义类型别名
// 定义别名typealias IntTypealias = Int// 使用var a = IntTypealias.min var b = Int.min// a 等价于 b
元组
元组(tuples)把多个值组合成一个复合值。元组内的值可以是任意类型。
// a 的类型是 (Int, String, Double)let a = (1, “汉字”, 3.1415926)
元组分解
let (b,c,d) = a// 输出: 1print(b)// 输出: 汉字print(c)/*如果你只需要一部分元组值,分解的时候可以把要忽略的部分用下划线(_)标记*/let (e,_) = a// 输出: 1print(e)//通过下标来访问单个元素,下标从零开始print(“第一个: (a.0)”)// 第一个:1print(“第二个: (a.1)”)// 第二个:汉字//定义元组的时候给单个元素命名:let f = (key: 10, val: “汉字”)// 10 print(key)
元组不适合用来创建复杂的数据结构,数据结构比较复杂,用类或结构体去建模
可选型和nil
可选类型表示:有值或者没有值
nil 不能用于非可选的常量和变量
var a: Int? = 10a = nillet b = “123”// c 推测为 可选类型// Int(b) 有可能不能转let c = Int(a)
可选绑定
if let a = Int(b) { print(“‘(b)’ 可以转换成 (a)”)} else { print(“‘(b)’ 转换失败”)}
?和 !
//表示 a 是可以选类型let a:string? = “1234”// b 一定有值let b:String! = “5678”let c = a!// 需要感叹号来获取值let d = b// 不需要感叹号来获取值