如果我将tester()方法设为实例方法,则下面的代码编译得很好。如何在保持类方法的同时使其工作?
protocol Numbers {
}
extension Numbers {
func amountFromText(text: String) -> Int {
return 0
}
}
class CommonDB: Numbers {
class func tester() {
let text = ""
let amount = amountFromText(text)
}
}
答案 0 :(得分:0)
在协议中定义函数的方式意味着它将是一个实例函数,也就是说,您需要一个类或结构的实例才能调用该函数。当您在类函数中时,您没有该类的实例。
如果要从类函数中调用amountFromText()
,请将其声明为static
。这样,它不需要调用类或结构的实例:
extension Numbers {
static func amountFromText(text: String) -> Int {
return 0
}
}