2015-09-11 58 views
9

创建初始化时方便member`这是我init`不明确的参考扩展

extension NSNumberFormatter { 

    convenience init(digits: Int = 0) { 
     self.init() //ambiguous reference to member 'NSNumberFormatter.init' 

     groupingSeparator = " " 
     decimalSeparator = "." 
     numberStyle = .DecimalStyle 
     roundingMode = .RoundHalfDown 

     maximumFractionDigits = digits 
     minimumFractionDigits = digits 
    } 
} 

的原因是什么?

同样的问题是,当我把self.init()放在我的方便初始化程序的末尾。

回答

10

原因是,您创建了一个新的init,因为digits的默认值为0,所以可以在没有任何参数的情况下调用该新的init。所以现在,init()可以引用默认的初始值设定项或新的。如果您删除digits的默认值,则会编译。

+0

对,真的很聪明:)谢谢 –