在苹果的Swift语言中,let和var有什么区别?
在我的理解中,它是一种编译语言,但它不在编译时检查类型。这让我很困惑。编译器如何知道类型错误?如果编译器不检查类型,这不是生产环境的问题吗?
当我试图给let赋值时给出了这个错误:
不能给属性赋值:'variableName'是一个'let'常量 将'let'改为'var'使其可变
在苹果的Swift语言中,let和var有什么区别?
在我的理解中,它是一种编译语言,但它不在编译时检查类型。这让我很困惑。编译器如何知道类型错误?如果编译器不检查类型,这不是生产环境的问题吗?
当我试图给let赋值时给出了这个错误:
不能给属性赋值:'variableName'是一个'let'常量 将'let'改为'var'使其可变
当前回答
Var是一个变量,你可以在任何时间任意改变它
例如
var changeit:Int=1
changeit=2
//changeit has changed to 2
Let是不变的,不能改变
例如
let changeit:Int=1
changeit=2
//Error becuase constant cannot be changed
其他回答
在var的情况下,值可以被重新赋值
//Variables
var age = 42
println(age) //Will print 42
age = 90
println(age) //Will Print 90
** newAge常量不能被重新赋给一个新值。尝试这样做会给出一个编译时错误**
//Constants
let newAge = 92 //Declaring a constant using let
println(newAge) //Will print 92.
我在其他语言中遇到的常量的另一个区别是:不能为以后初始化常量(let),应该在你即将声明常量时初始化。
例如:
let constantValue : Int // Compile error - let declarations require an initialiser expression
变量
var variableValue : Int // No issues
尽管你已经得到了let和var之间的许多区别,但一个主要的区别是:
let is compiled fast in comparison to var.
Let用于定义常量,var用于定义变量。
和C语言一样,Swift也使用变量来存储和引用变量的值。Swift还大量使用了值不可更改的变量。这些被称为常量,比c中的常量强大得多。当你处理不需要更改的值时,整个Swift都使用常量,使代码更安全、更清晰。 https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html
"使用let作为常量,使用var作为变量"
摘自:苹果公司《快速编程语言》。“iBooks。https://itun.es/us/jEUH0.l