基本数据类型
Int、UInt
:整数型、非负整数Float、Double
:单精度浮点数、双精度浮点数Bool
:布偶值String、Character
:字符串、字符
其他类型
Array, Dictionary
:数组、字典Struct
Class
var
:变量let
:常量,必须在声明的时候赋值
类型别名
typealias newname = type
typealias Feet = Int
可选类型
Optional
可选类型:用于处理值缺失的情况。可选表示"那儿有一个值,并且它等于 x
“或者"那儿没有值nil
”。
var optionalInteger: Int?
var optionalInteger: Optional<Int>
- 强制解析:当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号
!
来获取值。这个感叹号表示"我知道这个可选有值,请使用它。"
var myString:String?
myString = "Hello, Swift!"
if myString != nil {
print( myString! )
}else{
print("myString 值为 nil")
}
- 自动解析:你可以在声明可选变量时使用感叹号
!
替换问号?
。这样可选变量在使用时就不需要再加一个感叹号!
来获取值,它会自动解析。
var myString:String!
myString = "Hello, Swift!"
if myString != nil {
print(myString)
}else{
print("myString 值为 nil")
}
类型标注
var varB:Float
varB = 3.14159
print(varB)
let constB:Float = 3.14159
print(constB)
print输出
let name = "菜鸟教程"
let site = "http://www.runoob.com"
print("\(name)的官网地址为:\(site)")
转义字符 | 含义 |
---|
\0 | 空字符 |
\\ | 反斜线 \ |
\n | 换行符 |
\r | 回车符 |
\’ | 单引号 |
\" | 双引号 |
其他进制表示
- 二进制前缀为
0b
,八进制前缀为 0o
,十六进制前缀为 0x
,十进制没有前缀
let decimalInteger = 17
let binaryInteger = 0b10001
let octalInteger = 0o21
let hexadecimalInteger = 0x11
区间运算符
1...5
区间值为 1, 2, 3, 4 和 51..< 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"))
- 元组
tuple
类型让多个值作为一个复合值从函数中返回
func minMax(array: [Int]) -> (min: Int, max: Int) {
var currentMin = array[0]
var currentMax = array[0]
for value in array[1..<array.count] {
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)")
func runoob(site: String) {
print("菜鸟教程官网:\(site)")
}
runoob(site: "http://www.runoob.com")
func vari<N>(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")