2015-04-18 38 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

谢谢!你能解释为什么'变异'吗? –