我是Swift编程的新手,我遇到了var和let类型.我知道let是常数,我知道这意味着什么,但我从来没有使用常数,主要是因为我不需要.那么为什么我应该使用var而不是let,在什么情况下我应该使用它?
解决方法
当你知道一旦为变量赋值时,你就使用let,它不会改变 – 即它是不可变的.如果你声明一个表视图单元格的id,很可能它在生命周期内不会改变,所以通过声明它是不可变的,没有你可以错误地改变它的风险 – 编译器会通知你.
典型用例:
>常量(计时器的超时,固定大小标签的宽度,登录尝试的最大次数等).在这种情况下,常量是代码上的字面值的替代(想想#define)
>用作另一个函数输入的函数的返回值
>表达式的中间结果,用作另一个表达式的输入
>可选绑定中未展开值的容器
> REST API调用返回的数据,从JSON反序列化为结构,必须存储在数据库中
还有更多.每次我写var,我都会问自己:这个变量可以改变吗?如果答案是否定的,我用let替换var.有时我也使用一种更具保护性的方法:我将所有内容声明为不可变的,然后编译器会在我尝试修改其中一个时让我知道,并且对于每种情况我都可以相应地继续.
一些考虑:
对于引用类型(类),immutable意味着一旦将实例分配给不可变变量,就不能将另一个实例分配给同一个变量.
对于值类型(数字,字符串,数组,字典,结构,枚举),immutable意味着一旦分配了值,就无法更改值本身.对于简单数据类型(Int,Float,String),这意味着您无法分配相同类型的其他值.对于复合数据类型(结构,字典),这意味着您无法分配新值(例如结构的新实例),并且您无法更改其任何存储的属性.
对于开发人员和阅读代码的人来说,不可变变量也具有语义含义 – 它清楚地表明变量不会改变.
最后,但从纯粹的开发角度来看可能不那么重要,不可变的可以由编译器进行优化.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。