2014-09-08 5 views
0

Я хочу передать любой блок вокруг как параметр, не желая знать точный параметр блока/тип возврата.Как объявить функцию, которая принимает * any * block/clos как параметр?

func myFunc(block:(xxx) -> yyy) -> AnyObject { 
... 
} 

Так xxx в моем коде должно соответствовать любое число параметров (не включая ни одного) любого типа. И yyy может быть любым от void до AnyObject до NSObject.

ответ

1

К сожалению, вы не можете сделать этого в Swift. Function Types определяются их параметрами и типами возврата, и нет общего типа функции. Функции также не соответствуют Any или AnyObject, поэтому вы также не можете их использовать.

0

В Swift все еще можно использовать селектор. Возможно, вы можете достичь того, что хотите использовать. Смотрите пример ниже:

func myFunc(selector:Selector) -> AnyObject { 
    self.performSelector(selector) 
} 
func someSelector() -> String { 
    return "test" 
} 
var result: AnyObject = myFunc(Selector("someSelector")) 
2

Вы можете сделать обобщенную функцию:

func myFunc<A,B>(block:A -> B) -> AnyObject { 
    ... 
} 
+0

Это хорошо. Я пробую это до принятия. –

Смежные вопросы