2016-11-11 53 views
-1

我對swift很陌生,一直很難計算出計算出來的屬性。有沒有辦法將多個屬性傳遞給setter,還是僅限於一個?我試圖下面的代碼,但收到此錯誤Expected '{' to start setter definitionExpected '}' after setter parameter name可以計算的屬性在設置器上有多個屬性

我很困惑,整個類型也迅速確定並試圖傳遞一個字典到二傳手。但是那會導致我的返回類型的問題。

的代碼我目前有:

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

是的,他們可以,但是你必須聲明屬性爲'(Int,Int)'。在任何情況下,setter/getter **的類型都必須與該屬性的類型匹配。 – vadian

+0

你能解釋一下好嗎?我將如何將這些價值傳遞給二傳手? –

回答

1

要傳遞多個值,必須相應申報財產的種類二傳手,例如

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必須相同。

+0

從我在這裏得到它可能是一個更好的主意,使用函數來設置區域而不使用存儲的屬性? –

相關問題