Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Alguma diferença prática entre as declarações abaixo?

let product = Product(item: "Frango", price: 9.9)

var product = Product(item: "Frango", price:9.9)

A classe é simples:

class Product {
    var item:String
    var price:Double

    init(item:String, price:Double) {
        self.item = item
        self.price = price
    }
}
2 respostas
solução!

let é para declarar um valor constante. Uma vez que uma variável foi declarada com let, seu valor não pode ser mais alterado.

No exemplo abaixo, entendi que modificar o cart.items não chega a ser uma alteração de valor da cart. Correto?

class Cart {
    var buyer:String
    var items = Array<Items>()

    init(buyer:String) {
        self.buyer = buyer
    }
}

class Items {
    var product:String
    var price:Double
    var qty:Int

    init(product:String, price:Double, qty:Int) {
        self.product = product
        self.price = price
        self.qty = qty
    }
}

let cart = Cart(buyer: "Ricardo")
let item1 = Items(product: "Frango", price: 9.9, qty: 6)
let item2 = Items(product: "Arroz", price: 5.6, qty: 4)

cart.items.append(item1)
cart.items.append(item2)

A mudança de valor só ocorreria se tentasse fazer isso (continuando o mesmo código acima):

cart = Cart(buyer: "Novo Comprador")

Que no exemplo dado resulta em crash pois usei let.