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?这个问号必须加上,不然编译之前就报错了 
posted @ 2019-09-29 09:53  新年新气象  阅读(2872)  评论(0编辑  收藏  举报