在苹果的Swift语言中,let和var有什么区别?

在我的理解中,它是一种编译语言,但它不在编译时检查类型。这让我很困惑。编译器如何知道类型错误?如果编译器不检查类型,这不是生产环境的问题吗?

当我试图给let赋值时给出了这个错误:

不能给属性赋值:'variableName'是一个'let'常量 将'let'改为'var'使其可变


当前回答

"使用let作为常量,使用var作为变量"

摘自:苹果公司《快速编程语言》。“iBooks。https://itun.es/us/jEUH0.l

其他回答

Let定义一个“常数”。它的值设置一次且仅一次,但不一定在声明时设置。例如,你可以使用let来定义类中必须在初始化时设置的属性:

class Person {

    let firstName: String
    let lastName: String

    init(first: String, last: String) {
         firstName = first
         lastName = last
         super.init()
    }
}

通过这种设置,在调用(例如)Person(第一个:“Malcolm”,最后一个:“Reynolds”)创建Person实例后赋值给firstName或lastName是无效的。

您必须在编译时为所有变量(let或var)定义一个类型,并且任何试图设置变量的代码只能使用该类型(或子类型)。可以在运行时赋值,但在编译时必须知道其类型。

我在其他语言中遇到的常量的另一个区别是:不能为以后初始化常量(let),应该在你即将声明常量时初始化。

例如:

let constantValue : Int // Compile error - let declarations require an initialiser expression

变量

var variableValue : Int // No issues 

Let是一个不可变变量,意思是它不能被改变,其他语言称它为常量。在c++中,你可以把它定义为const。

Var是一个可变变量,这意味着它可以被改变。在c++(2011版本更新)中,它与使用auto相同,尽管swift允许更大的灵活性。这是初学者更熟悉的变量类型。

简单的区别

Let =(不能更改)

Var =(随时更新)

每个人都回答了这个问题,但有一种方法可以让你记住什么是什么

“让”总是说同样的想法“让”让这个工作一次和永远至于“var”变量总是可以改变,因此它们被称为变量