当我像这样在Swift中声明一个协议时,比如网络模块:
Protocol MyNetworkProtocol {
func reportError(error: Int) // <-- do you add prefix for this?
}
如何命名协议中的函数?你为它添加了前缀吗?
我问这个,因为如果我按照上面所示命名函数,调用者就像:
class MyClass: MyNetworkProtocol {
// some code for MyClass
func reportError(error: Int) {
// some code to handle it
}
}
如果我单独查看MyClass
中的代码,则reportError
不能立即识别为另一个类的协议的实现(除非我在代码中添加了一些注释)。
我想在这样的协议中命名函数:
Protocol MyNetworkProtocol {
func myNetworkProtocol_reportError(error: Int)
}
因此,在MyClass
中,我可以很快知道它是某个类的协议的实现。这有必要吗?我是否误解了一些概念?
答案 0 :(得分:2)
不要那样做。而是将协议方法分离为单独的扩展。
class MyClass {
}
extension MyClass: MyNetworkProtocol {
func reportError(error: Int) {
// some code to handle it
}
}
答案 1 :(得分:-1)
在协议功能中,按协议名称开始,带有协议类和参数的参数。额外的
Protocol MyNetworkProtocol {
func myNetworkProtocol(_ myNetwork: MyNetworkProtocol, _reportErrot: Int)
}
}
像这个功能将有助于轻松调试