swift中变量声明 var、let、?、??、!的使用,以及?和!的区别
感觉swift使用的人越来越多了,所以打算跟着潮流总结一点东西,不完善或者有错误的地方,请指出,共同进步
1.var 和 let的使用
- var声明的是变量,可以修改值(调用对象的set方法),举例说明
- let声明的是常量,不可以修改值(不可调用对象的set方法),举例说明
var varA = 42 varA = 43 print(varA)//输出43
let varC = 36 //varC = 46 报错,因为let申明的就是常量,不能修改值 print(varC)
2. ?的使用,如果对象没有赋值,默认为nil,举例说明 ??就是如果对象为nil,则使用后面的值代替,但是原变量不修改
var myString:String print(myString) //报错,因为myString没有赋值
var myString:String? print(myString) //输出:nil
var myString:String? = "myString" print(myString) //输出:myString
var myString:String? var myString1 = myString ?? "BBBB"; print("myString1:\(myString1) myString: \(myString)") // 输出:myString1:BBBB myString: nil
3.!的使用,如果对象没有赋值,直接使用,会报错,可以使用!
var myString:String! print(myString) //输出:nil
var myString:String! myString = "myString" print(myString) //输出:myString
4.?和!的区别,你会发现!和?在没有赋值的情况下打印出来的值都是nil,如果使用?声明的变量不赋值,直接调用对象的方法不执行,而使用!声明的变量不赋值,直接调用对象的方法运行会报错
var btn1: UIButton! btn1.frame = CGRect.init(x: 10, y: 10, width: 10, height: 120);//报错
var btn1: UIButton? btn1?.frame = CGRect.init(x: 10, y: 10, width: 10, height: 120);//没有报错,这里不执行 btn1?这个问号必须加上,不然编译之前就报错了