有类似的问题,但我没有找到一个回答这个特定的问题。
我在想。
在swift中,给定协议中存在多个签名的重载方法。
optional func foo()
optional func foo(bar: Int)
optional func bar()
要检查条形方法是否已实施,我可以去做:
if obj.bar != nil {
obj.bar()
}
但是,如何实现方法foo(:Int)
而不是foo
呢?
这可能吗?
答案 0 :(得分:3)
您可以选择使用显式绑定到变量 类型注释:
if let foo : (Void -> Void) = obj.foo {
foo()
} else {
print("`foo()` not implemented")
}
if let fooBar : (Int -> Void) = obj.foo {
fooBar(1)
} else {
print("`foo(bar: Int)` not implemented")
}