0

Why to instantiate a class I have to do it as a constant with let,

class car {
   var type: Int?
   var wheels: Int?
}

let auto = car()

I can use var as well:

var auto = car()

What is the difference?, thanks

2 Answers2

4

A constant can only be assigned to, or initialized, once:

let constantAuto = car()
constantAuto.type = 1       // changing properties is fine
constantAuto.wheels = 4
constantAuto = car()        // error - can't do this

whereas a variable can be assigned to multiple times:

var variableAuto = car()
variableAuto.type = 1       // changing properties is fine here too
// etc
// need to reset:
variableAuto = car()

Essentially, when you know you're only going to need to create the instance once, use let, so the compiler can be more efficient about the code it creates.

Nate Cook
  • 92,417
  • 32
  • 217
  • 178
0

if you're using let you're defining a constant, whereas with var you're declaring a variable.

"A constant declaration defines an immutable binding between the constant name and the value of the initializer expression; after the value of a constant is set, it cannot be changed. That said, if a constant is initialized with a class object, the object itself can change, but the binding between the constant name and the object it refers to can’t."

from https://developer.apple.com/library/prerelease/ios/documentation/swift/conceptual/swift_programming_language/Declarations.html

to sum it up: you can change the object a variable refers to, but you can't do that to a constant

Fabio
  • 3,015
  • 2
  • 29
  • 49