2014-11-05 46 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