基本数据类型
- Int、UInt:整数型、非负整数
- Float、Double:单精度浮点数、双精度浮点数
- Bool:布偶值
- String、Character:字符串、字符
其他类型
- Array, Dictionary:数组、字典
- Struct:结构体
- Class:类
- var:变量
- let:常量,必须在声明的时候赋值
类型别名
- typealias:类型别名
typealias newname = type /// 定义Feet类型为Int类型 typealias Feet = Int
类型标注
// 方法一 var varB:Float varB = 3.14159 print(varB) // 方法二 let constB:Float = 3.14159 print(constB)
可选类型
- 在 Swift 中,普通的变量或常量不能赋值为 nil(空值),但是可选类型的变量或常量可以,用于表示一个值可能为nil(空值)的情况,用问号❓表示
// 两种写法等价 var optionalInteger: Int? var optionalInteger: Optional
- 强制解析:当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号!来获取值。
// myString是String类型,且是可选类型,可能为空 var myString:String? // myString为Hello, Swift myString = "Hello, Swift!" // 强制解析myString,我知道它是存在值的 // 如果myString为nil会报错 print(myString!)
- 自动解析:你可以在声明可选变量时使用感叹号!替换问号?。这样可选变量在使用时就不需要再加一个感叹号!来获取值,它会自动解析。
// 自动解析 var myString:String! myString = "Hello, Swift!" print(myString)
print输出
- \()的使用
let name = "菜鸟教程" let site = "http://www.runoob.com" print("\(name)的官网地址为:\(site)")
- 转义字符
转义字符 含义 \0 空字符 \\ 反斜线 \ \n 换行符 \r 回车符 \’ 单引号 \" 双引号 其他进制表示
- 二进制前缀为 0b,八进制前缀为 0o,十六进制前缀为 0x,十进制没有前缀
let decimalInteger = 17 // 17 - 十进制表示 let binaryInteger = 0b10001 // 17 - 二进制表示 let octalInteger = 0o21 // 17 - 八进制表示 let hexadecimalInteger = 0x11 // 17 - 十六进制表示
区间运算符
- 1...5 区间值为 1, 2, 3, 4 和 5
- 1..< 5 区间值为 1, 2, 3, 和 4
for index in 1...5 {print("闭区间运算符:") } for index in 1..<5 {print("半开区间运算符:") }
合并空值运算符:??
- 合并空值运算符 a ?? b 如果可选项 a 有值则展开,如果没有值,是 nil,则返回默认值 b
- 表达式 a 必须是一个可选类型,表达式 b 必须与 a 的存储类型相同
- 合并空值运算符,实际上是三元运算符作用到 Optional 上的缩写 a != nil ? a! : b
- 如果 a 的值是非空,b的值将不会被考虑,也就是合并空值运算符是短路的
函数
- runoob:函数名, name、site:参数,String:返回值
func runoob(name: String, site: String) -> String { return name + site } // 调用 print(runoob(name: "菜鸟教程:", site: "www.runoob.com"))
- 不带参数函数
func funcname() -> datatype { return datatype }
- 没有返回值
func runoob(site: String) { print("官网:\(site)") } runoob(site: "http://www.baidu.com")
- 可变参数
func vari
(members: N...) { for i in members { print(i) } } vari(members: 4,3,5) vari(members: 4.5, 3.1, 5.6) vari(members: "Google", "Baidu", "Runoob") - 元组tuple类型让多个值作为一个复合值从函数中返回
func minMax(array: [Int]) -> (min: Int, max: Int) { var currentMin = array[0] var currentMax = array[0] for value in array[1..
if value < currentMin { currentMin = value } else if value > currentMax { currentMax = value } } return (currentMin, currentMax) } let bounds = minMax(array: [8, -6, 2, 109, 3, 71]) print("最小值为 \(bounds.min) ,最大值为 \(bounds.max)") 枚举
// 定义枚举 enum DayWeek { case SUNDAY case MONDAT case TUESDAY case WEDNESDAY case THURSDAY case FRIDAY case SATURDAY } // 快捷方式 enum DayWeek { case SUNDAY, MONDAT, TUESDAY } // 使用枚举 var weekDay = DayWeek.TUESDAY // 修改方法 weekDay = DayWeek.SATURDAY // 简写方法 weekDay = .SATURDAY
- 原始值
枚举可以是字符串,字符,或者任何整型值或浮点型值。每个原始值在它的枚举声明中必须是唯一的
在原始值为整数的枚举时,不需要显式的为每一个成员赋值,Swift会自动为你赋值,隐式赋值的值依次递增1,如果第一个值没有被赋初值,将会被自动置为0。
enum Month: Int { case January = 1 case February case March } // 快捷方式 enum Month: Int { case January = 1, February, March } let month = Month.March.rawValue print("数字月份为: \(month)。")
- 相关值
可以存放不同类型的枚举值
enum Student{ case Name(String) case Mark(Int,Int,Int) } var studDetails = Student.Name("Runoob") var studMarks = Student.Mark(98,97,95) switch studMarks {case Student.Name(let studName): print("学生的名字是: \(studName)。") case Student.Mark(let Mark1, let Mark2, let Mark3): print("学生的成绩是: \(Mark1),\(Mark2),\(Mark3)。") }
- 相关值
- 原始值
- 元组tuple类型让多个值作为一个复合值从函数中返回
- 可变参数
- 没有返回值
- 不带参数函数
- runoob:函数名, name、site:参数,String:返回值
- 二进制前缀为 0b,八进制前缀为 0o,十六进制前缀为 0x,十进制没有前缀
- 转义字符
- \()的使用
- 自动解析:你可以在声明可选变量时使用感叹号!替换问号?。这样可选变量在使用时就不需要再加一个感叹号!来获取值,它会自动解析。
- 强制解析:当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号!来获取值。
- 在 Swift 中,普通的变量或常量不能赋值为 nil(空值),但是可选类型的变量或常量可以,用于表示一个值可能为nil(空值)的情况,用问号❓表示
- typealias:类型别名