2014-11-05 95 views
2

我正在努力與這部分的Swift,無處可見我在該方法調用中看到一個額外的參數。在調用中的額外參數

struct RectPadding { 
    var top: CGFloat 
    var right: CGFloat 
    var bottom: CGFloat 
    var left: CGFloat 

    init() { 
     top = 0 
     right = 0 
     bottom = 0 
     left = 0 
    } 

    func setPadding(each: CGFloat) { 
     setPadding(top: each, right: each, bottom: each, left: each) // I get the error here 
    } 
    mutating func setPadding(#top: CGFloat, right: CGFloat, bottom: CGFloat, left: CGFloat) { 
     self.top = top 
     self.right = right 
     self.bottom = bottom 
     self.left = left 
    } 
} 

我錯過了什麼?

回答

2

這種方法:

mutating func setPadding(each: CGFloat) { 
    setPadding(top: each, right: each, bottom: each, left: each) // I get the error here 
} 

都將被聲明爲mutating,因爲反過來它調用不同誘變方法。

錯誤消息(額外參數)的原因是因爲它試圖調用自己(它具有相同的名稱),它只接受一個參數。

+0

好的,趕上!我可以看到這對於方法有什麼作用具有零含糊性是有用的。 '''''同樣的規則是否適用? – 2014-11-05 22:00:57

+1

'mutating'屬性適用於結構體和(不是類綁定的)協議 - 因此不適用,相同的規則不適用。 – Antonio 2014-11-05 22:02:42

+0

謝謝,我會盡快接受這個答案。 – 2014-11-05 22:03:14