import UIKit
var str = "Hello, playground"
//1.变量,常量
let max = 10
var current = 0
if current < max {
print(current)
}
var x = 0,y = 0.0
//2.类型标注
var message:String
message = "Hello"
//常量和变量的命名可以使任何喜欢的字符,但是,不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符,也不能以数字开头
let pai = 3.14
let 你好 = "中国🇨🇳"
let 🐶 = "🐩"
let ww2 = "heihei"
let bool = false
//3.分号
//并不强求在每一行的末尾添加分号,也可以根据自己习惯添加,但是有一种情况必须添加,你打算在同一行添加多条独立语句的时候,必须用分号隔开
let first = 0; var second = "haahhaah";print(first,second)
//4.整数:没有小数部分的数字,包括有符号整数(正,负,零)和无符号整数(正,零)
//swift提供 8,16,32,64位有符号和无符号整数类型
//整数范围:可以访问不同类型整数的最大值和最小值
let minValue = UInt8.min
let maxValue = UInt8.max //(2的8次方)
let min16 = UInt16.min
let max16 = UInt16.max //(2的16次方)
//Int
//一般情况下,不需要专门指定整数长度,Int的长度与当前平台的原生字长相同
let minInt = Int.min //(本机最小字长,64位)
let maxInt = Int.max
//数值型字面量
//十进制:没有前缀
//二进制:0b
//八进制:0o
//十六进制:0x
//如果一个十进制数的指数为 exp,那这个数相当于基数和10^exp的乘积:
print(1.25e2)//1.25*10^2
print(1.25e-2)//1.25*10^-2
//如果一个十六进制数的指数为exp,那这个数相当于基数和2^exp的乘积:
print(0xFp2) //15*2^2
print(0xFp-2) //15*2^-2 相当于15*1/4
//整数类型转换,其他类型转换类似
let twoThousand:UInt16 = 2_000
let one:UInt8 = 1
let sum = twoThousand + UInt16(one)
//5.类型别名,typealias
//给现有类型起一个别的名字,当你想要给现有类型起一个更有意义的名字时,类型别名非常有用。
typealias AudioSample = UInt16
var maxAudioS = AudioSample.max
//6.BOOL 布尔值 true false
let yes = true
let no = false
//Bool类型和整型不可以转换,非零即真在swift中是不适用的
//7.元组
//元组把多个值组合成一个复合值,元组内的值可以使任意类型,并不要求是相同类型
let httpError = (404,"Not Found")
//httpError的类型是(Int,String),值是(404,"Not Found")
//可以将元组内容分解成单独的常量和变量,然后就可以使用它们了
let (statusCode,statusMessage) = httpError
print("错误码:(statusCode),错误信息:(statusMessage)")
//如果你只需要一部分的元组值,分解的时候可以把要忽略的部分用(_)标记
let (justCode,_) = httpError
print("错误🐎 \(justCode)")
//可以通过下标访问元组中的元素,下标从0开始
print(httpError.0)
print(httpError.1)
//定义元组的时候给单个元素命名,命名后可以通过名字访问元组元素的值
let httpOK = (code:200,desc:"OK")
print(httpOK.code)
print(httpOK.desc)
//作为函数返回值的时候,元组是非常有用的
//8.可选类型 optionals
//使用可选类型来处理值可能缺失的情况,可选类型表示:
//1》有值,等于x
//2》没有值
//例如:String转Int,有可能成功,也有可能失败
let possibleNum = "123"
let possibleStr = "Hello"
let converNum = Int(possibleNum)
let converStr = Int(possibleStr)
print(possibleNum)
print(possibleStr)
var cc = converNum! + 1
//var dd = converStr! + 1 //报错
//上面的转换还可以这么写
let conver:Int? = Int(possibleNum)
let conver2:Int? = Int(possibleStr)
var ee = converNum! + 1
//var ff = converStr! + 1 报错
//你可以给一个可选变量赋值为nil表示它没有值
var serverResCode:Int? = 404
serverResCode = nil //现在serverResCode不包含值
//注意:nil不能用于非可选的变量或者常量
//如果你声明一个可选的常量或者变量但是没有赋值,它们会自动设置成nil
var surverAnswer:String?
//注意:Swift的nil和OC的nil的意义是不一样的,OC中的nil是指向不存在对象的指针。在Swift中,nil不是指针,它是一个确定的值,表示值缺失。任何类型的值缺失都可以被设置成nil,而不只是对象类型。