2015-12-12 38 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

當然!謝謝。 :) –

相關問題