1.常量变量:
var a
let b = "adc",
2.类型标注:
var welcomeMessage:String = "hello world"
没有类型标注的且被赋值的可以根据后面的值做”类型推断”,推断出类型.
3.输出:(字符串插值)
print("the current value of friendlyWecome is\(welcomeMessage)");
4.注释:
不同点是可以嵌套注释.
5.分号可省略
6.整数:
最大值:max 最小值:min
UInt8 Int Int32 Int64,一般使用Int就行了,除非是特定的长度.
小数默认是Double类型,Float类型必须注明
7.类型别名:typealias AudioSample = UInt16
8.布尔值:只有 true 和 false
9.元组:多不同类型或者相同类型的值组合起来,(404,”Not Found”)
元组的使用:
9.1.let(statusCode,statusMessage) = (404,"Not Found")
内容分解,可以直接使用.
print("the status code is \(statusCode)")
9.2 缺省用下划线 _ 表示
let (justTheStatusCode,_) = (404,"Not Found")
9.3 使用下标访问元组中元素(下标从0开始)
let http404Error = (404,"Not Found");
print("\(http404Error.0)")
print("\(http404Error.1)")
9.4 在定义元组时给单个元素命名
let http200Status = (statusCode:200,description:"OK")
print("the status code is \(http200Status.statusCode)")
注意:元组组织临时值时很有用,在复杂的数据结构时不适合.
10.可选类型:
在基本类型后面+?就表示可选类型 Int? String?
可选类型表示:这个值存在就是确定的值,不存在就是nil
swift中的nil只能用于可选类型,表示值不存在的情况,不能用其他类型.
在swift中nil不是指针,是一个确定的值.
11.if语句强制解析
var convertedNumber:String? = "abcd"
if convertedNumber != nil { // 如果可选类型包含值,条件为true
// 可选变量后面加! 就是解析出可选值包含的值
print("convertedNumber contains some integer value of \(convertedNumber!)")
}
注意:!强制解析一个不包含值的可选类型就导致出错,所以在强制解析之前就一定要判断是否包含值.
12.可选绑定
在 if 和 while 语句中可以对一个可选值进行绑定,当包含值时就将这个值赋值给变量或常量,条件为true,
不包含值为false
if let actualNumber = convertedNumber{
// 不用解析了,直接赋值给了可选绑定
print("包含可选值:\(actualNumber)")
}else{
print("不包含可选值")
}
13.隐式解析可选类型
第一次被赋值之后,可以确定一个可选类型总会有值的,这种类型的可选状态就是隐式解析可选类型.
?换为!就是隐式可选类型.
隐式解析可选类型就是普通的可选类型加 ! 解析,(没有值时尝试取值,会触发运行时错误)也可以当做非可选类型来使用,不加 ! 来解析.
if 语句强制解析
var assumedString:String! = "sad"
if assumedString != nil {
print(assumedString)
}