我可以在Swift中声明函数并在以后定义它们的实现吗?

我可以在Swift中声明函数并在以后定义它们的实现吗?,swift,interface,coding-style,Swift,Interface,Coding Style,来自Objective-C,我非常喜欢公开一段代码接口的头文件。Swift总是让我有点烦恼,因为即使是最有组织的代码也倾向于将公共/私有API隐藏在其他代码中,这让您挖掘细节 是否有任何实践或技巧可以在实现外部定义类或模块的公共接口?现在我只是在Swift文件的顶部发表评论,感觉很神秘 据我所知,您不能只在类中声明一个方法,然后在Swift的其他地方实现它 我觉得你们希望这样做是为了清晰明了,并将你们的方法组织到课堂上。为了在Swift中实现这一点,我采用了一些技巧,我很乐意与大家分享: 根据访

来自Objective-C,我非常喜欢公开一段代码接口的头文件。Swift总是让我有点烦恼,因为即使是最有组织的代码也倾向于将公共/私有API隐藏在其他代码中,这让您挖掘细节


是否有任何实践或技巧可以在实现外部定义类或模块的公共接口?现在我只是在Swift文件的顶部发表评论,感觉很神秘

据我所知,您不能只在类中声明一个方法,然后在Swift的其他地方实现它

我觉得你们希望这样做是为了清晰明了,并将你们的方法组织到课堂上。为了在Swift中实现这一点,我采用了一些技巧,我很乐意与大家分享:

  • 根据访问权限(即公共、私有和内部)分组组织方法。公共方法位于顶部,因为您希望您的客户机首先查看它们,然后是内部方法,最后是私有方法

  • 您可以将相关方法组织在一起,以便于理解、维护和浏览

  • 有时,如果公共和私人方法相互关联且依赖性很强,则最好打破上述规则,将它们分组

  • 您可以将执行特定任务的相关方法分组到扩展中。我通常遵循这种模式在类中实现特定的协议或委托。您也可以在单独的文件中执行此操作


  • 这并不是对您问题的直接回答,但我试图通过在类中定位方法的组织来解决它的核心问题。

    因此我一直在探索这里的选项,看起来您可以使用协议定义接口,并使您的类符合该协议。有点偏僻,但是如果目标是一个公共接口,这就实现了

    // 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...
        }
    
    }
    

    我还要补充一点:在Swift中,在类中,可以在定义方法之前使用方法,因此这有助于将公共和内部方法移到顶部。