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

时间:2015-05-04 02:06:22

标签: swift interface coding-style

来自Objective-C,我非常喜欢暴露一段代码接口的头文件。 Swift总是困扰我一点,因为即使是最有组织的代码仍然倾向于将公共/私有API隐藏在其余的代码中,让你挖掘细节。

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

2 个答案:

答案 0 :(得分:5)

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

我觉得你想要清楚这一点并将你的方法组织成课堂。为了在Swift中实现这一点,我将遵循一些我很乐意与您分享的技巧:

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

  2. 您可以将相关方法组合在一起,以便于理解,维护和导航。

  3. 如果相关且依赖性很强,有时候违反上述规则对公共和私人方法进行分组是很好的。

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

  5. 这不是你问题的直接答案,但我试图通过定位一个类中方法的组织来解决它的核心问题。

答案 1 :(得分:0)

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

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

}