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

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

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

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


当前回答

用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 =(不能更改)

Var =(随时更新)

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用于声明一个变量值—您可以根据需要更改它的值。

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

用可变性/不可变性概念来陈述这种差异可能更好,这是对象空间中值和实例可变性的正确范式,比唯一的“常量/变量”通常概念更大。 而且这更接近于Objective C的方法。

2 .数据类型:值类型和引用类型。

在值类型的上下文中:

'let'定义一个常量(不可变)。'var'定义了一个可变值(mutable)。

let aInt = 1   //< aInt is not changeable

var aInt = 1   //< aInt can be changed

在参考类型中:

数据的标签不是值,而是对值的引用。

if Person = Person(名称:Foo,第一个:Bar)

person不包含此人的数据,但包含此人数据的引用。

let aPerson = Person(name:Foo, first:Bar)
               //< data of aPerson are changeable, not the reference

var aPerson = Person(name:Foo, first:Bar)
               //< both reference and data are changeable.

eg:

var aPersonA = Person(name:A, first: a)
var aPersonB = Person(name:B, first: b)

aPersonA = aPersonB

aPersonA now refers to Person(name:B, first: b)

and

let aPersonA = Person(name:A, first: a)
let aPersonB = Person(name:B, first: b)

let aPersonA = aPersonB // won't compile

but

let aPersonA = Person(name:A, first: a)

aPersonA.name = "B" // will compile