Swift:使協(xié)議中的關(guān)聯(lián)類型參數(shù)可讀

作者:Natasha,原文鏈接,原文日期:2016-04-09
譯者:Crystal Sun;校對:小鍋;定稿:shanks

我還在習(xí)慣 Swift 中的關(guān)聯(lián)類型(Associated Type),盡管它們已經(jīng)出現(xiàn)好一陣子了,我最初是從這篇文章 @alexisgallagher里開始理解它們的。

我很開心昨天能在 iOS 開發(fā)中用它們解決 iOS 開發(fā)中的一個常見問題:在 Swift 中對使用 Storyboard 和 Segue 的 View Controller 進(jìn)行依賴注入。

昨天我更新了博客,但是我的協(xié)議一開始看起來是這樣的:

protocol Injectable {
    
    associatedType T
    func inject(thing: T)
    func assertDependencies()
}

注意 thing 這個參數(shù)!因為每個 View Controller 都會被注入一些特別具體的東西 —— 有可能是基于文本的、基于數(shù)值的、基于數(shù)組的,或者其他任何類型!我不知道如何更好地對參數(shù)命名。所以 thing 看起來是最合適的參數(shù)名字了。

實(shí)現(xiàn)看起來是這樣子的:

func inject(thing: T) {
    textDependency = thing
} 

我實(shí)在不喜歡 thing 這個名字 —— 完全沒有可讀性。所以今天早上,我想到了一個瘋狂的解決方案,不用 thing 了,結(jié)果這方法竟然走得通!

protocol Injectable {
    associatedType T
    
    // 用 _ 替換掉 thing
    func inject(_: T)
    
}

替換掉 thing,我在協(xié)議里把參數(shù)名字留空(即改成 _)!
很明顯,現(xiàn)在實(shí)現(xiàn)此協(xié)議時,我可以把參數(shù)命名成任何名字了。

class MyStringDependencyViewController: UIViewController, Injectable {
    
    private var textDependency: String!
    
    // 在這個地方,thing 是 text
    func inject(text: String) {
        textDependency = text
    }
}

class MyIntDependencyViewController: UIViewController, Injectable {
    
    private var numberDependency: Int!
    
    // 在這個地方,thing 是 number
    func inject(number: Int) {
        numberDependency = number
    }
}

現(xiàn)在,實(shí)現(xiàn)過程非常清晰,隨著使用關(guān)聯(lián)類型的次數(shù)增多,我越來越喜歡它了。

本文由 SwiftGG 翻譯組翻譯,已經(jīng)獲得作者翻譯授權(quán),最新文章請訪問 http://swift.gg

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文鏈接原文日期:2016-04-09譯者:Crystal Sun 我慢慢習(xí)慣了 Swift 里的 Associa...
    sing_crystal閱讀 762評論 0 2
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,424評論 4 61
  • 因為喜歡 所以想變得更好 不想因為自己而錯過你 因為喜歡 所以格外努力 怕你還么知道我心意前 離開 因為喜歡 所以...
    天才喬閱讀 150評論 0 0
  • 今年我已經(jīng)23歲了!從小到大,我一直不知道我為什么活著,努力學(xué)習(xí),考上大學(xué),似乎只是大人叫我干什么,我就干什么,2...
    紅心大盜閱讀 244評論 0 0

友情鏈接更多精彩內(nèi)容