protocol Car {
static func foo()
}
struct Truck : Car {
}
extension Car {
static func foo() {
print("bar")
}
}
Car.foo() // Does not work
// Error: Car does not have a member named foo
Truck.foo() // Works
Xcode正确地自动填充Car.foo()
,所以我要问的是它是否是一个它没有编译的错误(说它没有一个名为foo()的成员)。如果在协议扩展中定义静态方法,可以直接在协议上调用静态方法吗?
答案 0 :(得分:7)
答案 1 :(得分:1)
不,错误信息不好,但它告诉你正确的事情。
以这种方式思考,你不能拥有
protocol Car {
static func foo() {
print("bar")
}
}
这会编译错误“协议方法可能没有实体”。
协议扩展不会为不存在的协议添加功能。