在苹果的Swift语言中,let和var有什么区别?
在我的理解中,它是一种编译语言,但它不在编译时检查类型。这让我很困惑。编译器如何知道类型错误?如果编译器不检查类型,这不是生产环境的问题吗?
当我试图给let赋值时给出了这个错误:
不能给属性赋值:'variableName'是一个'let'常量 将'let'改为'var'使其可变
在苹果的Swift语言中,let和var有什么区别?
在我的理解中,它是一种编译语言,但它不在编译时检查类型。这让我很困惑。编译器如何知道类型错误?如果编译器不检查类型,这不是生产环境的问题吗?
当我试图给let赋值时给出了这个错误:
不能给属性赋值:'variableName'是一个'let'常量 将'let'改为'var'使其可变
当前回答
主要的区别是var变量值可以改变,而let不能。如果你想让一个用户输入数据,你可以使用var来改变值,使用let数据类型变量来改变值。
var str = "dog" // str value is "dog"
str = "cat" // str value is now "cat"
let strAnimal = "dog" // strAnimal value is "dog"
strAnimal = "cat" // Error !
其他回答
The
在Swift编程语言文档中,声明常量和变量部分指定了以下内容:
使用let关键字声明常量,使用var关键字声明变量。
确保理解Reference类型是如何工作的。与值类型不同,尽管引用类型的实例被声明为常量,但对象的底层属性可以改变。请参阅文档中的类是引用类型部分,并查看更改frameRate属性的示例。
用let关键字声明常量,用var关键字声明变量。
let maximumNumberOfLoginAttempts = 10 var currentLoginAttempt = 0
let maximumNumberOfLoginAttempts = 10
var currentLoginAttempt = 0
在一行中声明多个常量或多个变量,用逗号分隔:
var x = 0.0, y = 0.0, z = 0.0
打印常量和变量
你可以用println函数输出常量或变量的当前值:
println(friendlyWelcome)
Swift使用字符串插值将常量或变量的名称作为占位符包含在更长的字符串中
将名称用括号括起来,并在开括号前用反斜杠转义:
println("The current value of friendlyWelcome is \(friendlyWelcome)")
参考资料:http://iosswift.com.au/?p=17
我在其他语言中遇到的常量的另一个区别是:不能为以后初始化常量(let),应该在你即将声明常量时初始化。
例如:
let constantValue : Int // Compile error - let declarations require an initialiser expression
变量
var variableValue : Int // No issues
关键字var用来定义一个变量,你可以像这样轻松地修改它的值:
var no1 = 1 // declaring the variable
no1 = 2 // changing the value since it is defined as a variable not a constant
但是,let关键字仅用于创建一个常量,当您不想再次更改常量的值时使用。如果你试图改变常数的值,你会得到一个错误:
let no2 = 5 // declaring no2 as a constant
no2 = 8 // this will give an error as you cannot change the value of a constant
找到了一个很好的答案,希望能有所帮助:)