2015-05-10 50 views
0

說我有很多函數返回多個UIColor。讓我們來看看其中的一個:如何使用擴展來簡化Swift代碼?

func deepSkyBlue() -> UIColor { 
    return UIColor(red: 0, green: 0.69, blue: 0.98, alpha: 1) 
} 

我所有的功能都alpha等於1.0,所以它會是有意義的使用擴展,完全忽略一個參數。我怎樣才能做到這一點?

+0

什麼是編譯器錯誤? –

+0

'在調用中缺少參數'alpha'的參數。實際上,我仍然需要找到一種方法將'neverAlpha'代碼嵌入到我的'UIColor'函數中。謝謝! – Cesare

+0

所以編譯器錯誤不是用於'neverAlpha',而是用於'deepSkyBlue'? –

回答

4

如果我們希望我們的alpha在我們沒有將它傳遞給UIColor構造函數時假定爲1.0,那麼我們需要做的就是在擴展中添加一個新的構造函數。

extension UIColor { 
    convenience init(red: CGFloat, green: CGFloat, blue: CGFloat) { 
     self.init(red: red, green: green, blue: blue, alpha: 1.0) 
    } 
} 

而現在我們可以使用您嘗試使用這三個參數的構造函數:

static func deepSkyBlue() -> UIColor { 
    return UIColor(red: 0, green: 0.69, blue: 0.98) 
}