在苹果的Swift语言中,let
和var
有什么区别?
据我所知,它是一种编译语言,但在编译时不会判断类型.这让我很困惑.编译器如何知道类型错误?如果编译器没有判断类型,这不是生产环境的问题吗?
当我try 为let
赋值时,会出现此错误:
Cannot assign to property: 'variableName' is a 'let' constant
Change 'let' to 'var' to make it mutable
在苹果的Swift语言中,let
和var
有什么区别?
据我所知,它是一种编译语言,但在编译时不会判断类型.这让我很困惑.编译器如何知道类型错误?如果编译器没有判断类型,这不是生产环境的问题吗?
当我try 为let
赋值时,会出现此错误:
Cannot assign to property: 'variableName' is a 'let' constant
Change 'let' to 'var' to make it mutable
let
关键字定义了一个常量:
let theAnswer = 42
之后不能更改theAnswer
.这就是为什么weak
不能用let
来写.它们需要在运行时使用change,而您必须使用var
.
var
定义了一个普通变量.
有趣的是:
常数doesn’t need to be known at compile time的值,但必须精确赋值一次.
另一个奇怪的特征:
你几乎可以用任何你喜欢的字符来表示常量和变量
let ?? = "dogcow"
摘自:苹果公司《Swift编程语言》我的书.https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewBook?id=881256329
因为 comments 要求在答案中添加其他事实,将其转换为community wiki answer.请随意编辑答案,使其更好.