簡體   English   中英

我可以在Swift中聲明函數,然后再定義它們的實現嗎?

[英]Can I declare functions in Swift and later define their implementation?

來自Objective-C,我非常喜歡標頭文件,這些文件公開了一段代碼的接口。 Swift一直困擾着我,因為即使最有組織的代碼仍然傾向於將公共/私有API掩埋在其余的代碼中,這使您需要挖掘細節。

有什么實踐或技巧可以定義實現外部的類或模塊的公共接口? 現在,我只是在Swift文件的頂部進行評論,感覺很不可思議。

據我所知,您不能只在類中聲明一個方法並在Swift的其他地方實現它。

我覺得您希望這樣做是為了使表述更加清晰並組織您的方法。 為了在Swift中實現這一目標,我遵循一些技巧,我很樂意與您分享:

  1. 根據訪問權限(即公共,私有和內部)分組組織方法。 您希望客戶端首先查看公共方法,然后內部和最后一個私有方法。

  2. 您可以將相關方法組織在一起,以使其易於理解,維護和瀏覽。

  3. 有時候,打破以上規則將公共方法和私有方法進行分組(如果它們具有相關性並且具有很大的依賴性)是很好的。

  4. 您可以將執行特定任務的相關方法分組到擴展中。 我通常遵循這種模式來實現特定的協議或類中的委托。 您也可以在單獨的文件中執行此操作。

這不是您問題的直接答案,但我已嘗試通過針對類中的方法組織來解決其核心問題。

因此,我一直在這里探索這些選項,您似乎可以使用協議定義接口,並使您的類符合該協議。 有點麻煩,但是如果以公共接口為目標,那么就可以實現。

// Foo.swift

protocol PublicFoo {

    func publiclyExposedMethod(arg:AnyObject) -> AnyObject

    var publiclyExposedVariable:AnyObject

}


class Foo : PublicFoo {

    var publiclyExposedVariable:AnyObject = // something

    func publiclyExposedMethod(arg:AnyObject) -> AnyObject {
        // do stuff...
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM