我对swift很新,并且很难搞清楚计算属性。有没有办法将多个属性传递给setter,还是仅限于一个?我正在尝试以下代码,但收到此错误Expected '{' to start setter definition
和Expected '}' 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
}
}
}
答案 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的类型必须相同。