2015-04-18 42 views
0

抱歉打擾一些可能很容易的事情。結構類導致重新分配變量不工作

這裏是我的代碼現在唯一的區別是'結構',而不是'類'。現在它導致changeAmount功能不再起作用。我曾嘗試將其聲明爲'let'等,但它顯示了其他錯誤。如果有人有一個很好的解決方案。

struct Product { 
    var ID : String = "" 
    var name : String = "" 
    var type : String = "" 
    var price : Double = 0.00 
    var image : String = "" 
    var amount : Int = 1 
    var imageURL : String = "" 
    var thumbnailURL : String = "" 
    var description : String = "" 

    init(id:String, name:String, description:String, type:String, price:Double, image:String, imageURL:String, thumbnailURL:String, amount:Int = 1) { 
     self.ID = id 
     self.name = name 
     self.description = description 
     self.type = type 
     self.price = price 
     self.image = image 
     self.imageURL = imageURL 
     self.thumbnailURL = thumbnailURL 
     self.amount = amount 
    } 

    func changeAmount(a:Int){ self.amount = a } 
} 
+0

(實際上是同一個問題被問,回答,收爲重複只需30分鐘之前:) –

+0

對不起!我不確定究竟該如何解決這個問題。突變標籤似乎已經奏效,一如既往地感謝大家! –

+0

任何人都可以解釋爲什麼'mutating'我想知道爲什麼。 –

回答

1

如果一個函數會改變結構的內容,你需要將其申報爲mutating

mutating func changeAmount(a:Int){ 
    self.amount = a 
} 
+0

謝謝!你能解釋爲什麼'變異'嗎? –