我可以通過將我的函式放在類的私有擴展中來創建私有函式,而不是通過不斷呼叫來創建新的私有函式private func functionName(){}嗎?
這樣做:
private extension mClass {
func mFuncOne(){}
func mFuncTwo(){}
func mFuncThree(){}
func mFuncFour(){}
func mFuncFive(){}
}
代替:
class mClass {
private func mFuncOne(){}
private func mFuncTwo(){}
private func mFuncThree(){}
private func mFuncFour(){}
private func mFuncFive(){}
}
uj5u.com熱心網友回復:
從技術上講,區別在于private extension使方法fileprivate,而不是private。
但真正的問題是為什么要使用 aprivate extension而不是僅僅將各個方法宣告為private?
我們這樣做是因為:
- 擴展有助于組織我們的代碼,將方法分成邏輯分組(例如,它避免將私有實作細節與公共介面混合);
- 擴展的使用提供了 Xcode IDE 中整組方法的代碼折疊;和
- 整個擴展的標記為
private避免了private每個方法重復關鍵字的句法噪音。
所以,private方法和aprivate extension中的方法在技術上不是一回事,但區別很微妙,private extension模式卻非常方便。它簡潔地指定了包含在當前檔案之外的任何方法都不會被使用。
uj5u.com熱心網友回復:
是的,你可以這樣做。只是擴展名和原始宣告必須在同一個檔案中。根據Swift 指南:
與它們所擴展的類、結構或列舉位于同一檔案中的擴展的行為就像擴展中的代碼是作為原始型別宣告的一部分撰寫的一樣。因此,您可以:
- ...
- 在擴展中宣告私有成員,并從同一檔案中的原始宣告訪問該成員。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/384094.html
標籤:迅速
