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

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

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

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


当前回答

尽管你已经得到了let和var之间的许多区别,但一个主要的区别是:

let is compiled fast in comparison to var.

其他回答

找到了一个很好的答案,希望能有所帮助:)

根据Swift编程语言书

和C语言一样,Swift使用变量来存储和引用值 识别的名字。Swift还大量使用了变量whose 数值不可修改。这些被称为常数,而且很多 比C语言中的常量更强大。

var和let都是引用,因此let是const引用。 使用基本类型并不能真正说明let与const有何不同。 区别在于当它与类实例(引用类型)一起使用时:

class CTest
{
    var str : String = ""
}

let letTest = CTest()
letTest.str = "test" // OK

letTest.str = "another test" // Still OK

//letTest = CTest() // Error

var varTest1 = CTest()
var varTest2 = CTest()
var varTest3 = CTest()

varTest1.str = "var 1"
varTest2.str = "var 2"
varTest3 = varTest1
varTest1.str = "var 3"

varTest3.str // "var 3"

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

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

在swift语言中,let是一个常量,意思是不能重新分配,但var可以重新分配

let question = "what is the difference between let and var?"

question = "another question" // this line cause syntax error

var answer = "let is constant and var is simple variable"

answer = "let can't be reassigned var can be reassigned" // this line will be excecuted

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

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