常量
- 关键字:let
- 特点:定义之后不能修改
变量
- 关键字:var
- 特点:定义之后可以修改
注意点
- Swift中所有定义常量和变量的方法默认都使用自动推导,也就是说不需要程序员去定义具体类型(如果程序要求必须定义具体类型的话写法为:
let / var : 具体数据类型 = 值
); - 如果定义的是小数型变量或者常量,默认类型为
Double
- Swift不会做默认的隐式转换,任何不同类型之间不允许直接运算所以它对类型要求异常严格,所有的类型确定都由程序员负责;
以上这样的代码是编译不过的,会报错,报错原因为let a = 10 let b = 20.5 let c = a + b
Binary operator '+' cannot be applied to operands of type 'Int' and 'Double'
,必须做强制转换。
强转类型的代码表现形式与Objective-C也不一样,Objective-C的写法为let a = 10 let b = 20.5 let c = a + Int(b)
(int)b
- 在 Swift 中不存在基本数据类型,都是结构体;
- 以
let
定义的常量只能赋值一次,初始化后的常量不可以更改。
关于var
和let
的选择
func demo() {
var a = 10
let b = 20
print(a + b)
}
以上代码可以正常编译运行,但Xcode会弹出警告提示用户Variable 'a' was never mutated; consider changing to 'let' constant.
大概意思是说:变量 ‘a’ 从来没有被改变,建议将 var
修改为 let
通过代码警告可以得出,任何不需要后期做改动的值都建议定义为let
,这样确保了值的安全,不会出现被无故修改的风险,一般正常开发中都会定义成let
,如果后期需要做修改的时候再更改为var
总结
-
let
定义常量,一经赋值不允许修改; -
var
定义变量,赋值之后仍可以修改; - 开发中优先使用
let
,必要修改的时候再进行修改; - 定义类的属性必须使用
var
; - Swift任何时候都不会做隐式转换,必须清楚自己定义的所有属性的类型信息;