2015-12-12 37 views
2

也有类似的问题,但我没有找到答案这个具体的问题。如何检查是否实现了可选的重载方法?

我想知道。

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

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

optional func bar() 

要检查杆法开始实施,我可以去,只是这样做:

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

但我怎么能告诉foo(:Int)代替foo的方法来实现? 这可能吗?

回答

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") 
} 
+0

当然!谢谢。 :) –

相关问题