如何检查是否实现了可选的重载方法?

时间:2015-12-12 11:37:36

标签: swift

有类似的问题,但我没有找到一个回答这个特定的问题。

我在想。

在swift中,给定协议中存在多个签名的重载方法。

optional func foo()
optional func foo(bar: Int)

optional func bar()

要检查条形方法是否已实施,我可以去做:

if obj.bar != nil {
   obj.bar()
}

但是,如何实现方法foo(:Int)而不是foo呢? 这可能吗?

1 个答案:

答案 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")
}