在苹果的Swift语言中,letvar有什么区别?

据我所知,它是一种编译语言,但在编译时不会判断类型.这让我很困惑.编译器如何知道类型错误?如果编译器没有判断类型,这不是生产环境的问题吗?

当我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.请随意编辑答案,使其更好.

Swift相关问答推荐

在列表项内的NavigationLink中的按钮无法正常工作

.onReceive NSWindow.CloseNotify是否会为App中的每个窗口调用?

传递给SWIFT ResultBuilder的闭包中结果类型的对象

通过SwiftUI中的列表 Select 从字典中检索值

从后台线程获取@发布属性的值(不更改它)是正确的吗?

在NavigationStack上设置拐角半径:SwiftUI中的无响应内容视图区

SwiftUI .task 视图修改器:运行在哪个线程中?

在 Swift 5.7 中使用协议作为类型时什么时候需要写 `any`

将 Encodable 扩展添加到 Swift 嵌套枚举

Swift-SceneKit-无法从art.scnassets加载.scn文件

从 Swift Vapor Server 中调用 ShazamKit

如何从数据中读取以空结尾的字符串?

Swift并发:为什么不在其他后台线程上执行任务

iOS Swift - 如何更改表格视图的背景 colored颜色 ?

如何在 Swift 中将 UILabel 居中?

如何轻松删除领域中的所有对象

快速覆盖属性

URLComponents.url 为零

我可以让#selector 引用 Swift 中的闭包吗?

NSLocationWhenInUseUsageDescription 警告,但我已经添加了