在swift中,将多个函数共用于多个类的最佳实践是什么,这些类之间的继承是不可行的?
我是编程的新手,所以请不要屈尊俯就。就在几个月前我第一次开始学习的时候,我被告知重复代码的糟糕做法,当时我在Ruby编写,我可以在其中创建一个所有功能都驻留的模块,然后只需在任何模块中包含模块我希望使用这些函数的类。只要模块函数中的所有变量都在代码工作的类中声明。
在swift中是否有类似的做法,或者我应该做一些其他事情,比如制作一堆全局函数并将实例变量传递给那些函数?请尽可能具体,因为我会按照你的建议快速推进我写的所有代码,谢谢!
答案 0 :(得分:0)
您的问题的简单答案是协议
定义协议
protocol ProtocolName {
/* common functions */
func echoTestString()
}
extension ProtocolName {
/* default implementation */
func echoTestString() {
print("default string")
}
}
符合协议的类,默认实现
class ClassName: ProtocolName {
}
ClassName().echoTestString() // default string
符合协议的类,具有覆盖实现
class AnotherClass: ProtocolName {
func echoTestString() {
print("my string")
}
}
AnotherClass().echoTestString() // my string
答案 1 :(得分:0)
虽然有意见,但我认为这是正确的路线 - 使用框架目标。协议也有效。但是使用框架,您可以:
如果你想使用“include”Swift动词(及其附带的所有动词),你几乎需要使用Framework目标。如果你想完全拆分代码。当你在一个项目中时,使用协议,不想“重复”代码片段,并且知道你将永远是本地的。
如果你想要的是(a)跨项目使用协议,(b)包括真正的单独代码,(c)具有全局函数,而(d)传递实例变量......考虑单独的目标。
编辑:看看你的问题标题(“使用相同的函数”)并考虑OOP与函数式编程,我想我会添加一些不会改变我的解决方案但增强它的东西 - 函数式编程意味着你可以“通过“作为参数的函数。我不认为这就是你所说的,但它是你编码中另一部分是Swifty。