2017-01-15 4 views
2

Я хотел бы создать функцию, которая принимает функцию, которая принимает определенные типы параметров в качестве аргумента. Например:Как создать функцию, которая принимает функцию с определенными параметрами в качестве аргумента?

myFn(Function paramFn) { 
    paramFn([1, 2, 3]); 
} 

Как я могу гарантировать, что paramFn принимает List<int> в качестве единственного параметра?

ответ

5

Вы можете использовать typedef, чтобы связать символ с функцией, которая удовлетворяет требуемой подписи. Что-то вроде

typedef void ParamFn(List<int> l); 

myFn(ParamFn f) { 
    f('abc'); // compile time error 
    f([1,2,3]); // works fine 
} 
1

Вот что такое typedefs, хотя я не уверен, насколько жестким будет сильный режим.

6

Вы можете использовать typedef определить подпись, которую хотели описано в Kul's answer или вы можете просто встраивать функцию подписи в параметре:

myFn(void paramFn(List<int> l)) { 
    paramFn([1, 2, 3]); 
} 
Смежные вопросы