在苹果的Swift语言中,let和var有什么区别?
在我的理解中,它是一种编译语言,但它不在编译时检查类型。这让我很困惑。编译器如何知道类型错误?如果编译器不检查类型,这不是生产环境的问题吗?
当我试图给let赋值时给出了这个错误:
不能给属性赋值:'variableName'是一个'let'常量 将'let'改为'var'使其可变
在苹果的Swift语言中,let和var有什么区别?
在我的理解中,它是一种编译语言,但它不在编译时检查类型。这让我很困惑。编译器如何知道类型错误?如果编译器不检查类型,这不是生产环境的问题吗?
当我试图给let赋值时给出了这个错误:
不能给属性赋值:'variableName'是一个'let'常量 将'let'改为'var'使其可变
当前回答
关键字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
其他回答
就像Luc-Oliver、NullData和其他一些人在这里所说的,let定义不可变数据,而var定义可变数据。任何可以在标记为突变的变量上调用的func,只有当它是var变量时才能调用(编译器将抛出错误)。这也适用于带有inout变量的func。
然而,let和var也意味着变量不能被重新赋值。它有两个意思,目的都很相似
Let用于定义常量,var用于定义变量。
和C语言一样,Swift也使用变量来存储和引用变量的值。Swift还大量使用了值不可更改的变量。这些被称为常量,比c中的常量强大得多。当你处理不需要更改的值时,整个Swift都使用常量,使代码更安全、更清晰。 https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html
Var值可以改变,初始化后。但让价值不被改变,当它被初始化一次。
在var情况下
function variable() {
var number = 5, number = 6;
console.log(number); // return console value is 6
}
variable();
如果让
function abc() {
let number = 5, number = 6;
console.log(number); // TypeError: redeclaration of let number
}
abc();
Let用于定义常量,var用于定义变量。 你使用var定义字符串,那么特定的string可以通过赋值给一个变量(在这种情况下它可以被修改)来修改(或突变),如果你使用let它是一个常量(在这种情况下它不能被修改):
var variableString = "Apple"
variableString += " and Banana"
// variableString is now "Apple and Banana"
let constantString = "Apple"
constantString += " and another Banana"
// this reports a compile-time error - a constant string cannot be modified
非常简单:
设为常数。 Var是动态的。
描述一下:
创建一个常数。(有点像NSString)。一旦你设置了它,你就不能改变它的值。你仍然可以把它添加到其他东西,并创建新的变量。
Var创建一个变量。(有点像NSMutableString)所以你可以改变它的值。但这个问题已经被回答了好几次。