计算属性可以在setter上具有多个属性

时间:2016-11-11 21:05:36

标签: swift properties

我对swift很新,并且很难搞清楚计算属性。有没有办法将多个属性传递给setter,还是仅限于一个?我正在尝试以下代码,但收到此错误Expected '{' to start setter definitionExpected '}' after setter parameter name

我对swift中定义的整个类型感到困惑,并尝试将字典传递给setter,但这会导致我的返回类型出现问题。

我目前的代码:

struct Shape {
    var height: Int = 0
    var width: Int = 0

    var area: Int {
        set (width, height) {
            self.width = width
            self.height = height
        }

        get {
            return self.width * self.height
        }
    }
}

1 个答案:

答案 0 :(得分:1)

要将多个值传递给setter,您必须相应地声明属性的类型,例如

struct Shape {
   var height: Int = 0
   var width: Int = 0

   var area: (Int, Int) {
      set  {
         self.width = newValue.0
         self.height = newValue.1
      }

      get {
         return (width, height)
      }
   }
}

var shape = Shape()
shape.area = (120, 60)

print(shape.area) // (120, 60)

如评论中所述,属性,setter和getter的类型必须相同。