如何将函数文字作为回调传递

时间:2017-03-19 16:16:18

标签: d

以下是我要做的事情:

void x(function int(int) f){
    f(555);
}

void main(){
    x(function int(int q){  });
}

错误消息令人困惑:

funcs.d(4): Error: basic type expected, not function
funcs.d(4): Error: found 'int' when expecting '('
funcs.d(4): Error: basic type expected, not (
funcs.d(4): Error: function declaration without return type. (Note that constructors are always named 'this')
funcs.d(4): Error: found 'f' when expecting ')'

我无法从这些错误消息中获得任何信息。

1 个答案:

答案 0 :(得分:2)

使用function中的x关键字切换返回类型。出于某种原因,他们是文字的另一种方式。此外,您传递的功能即使应该

也不会返回任何内容
void x(int function(int) f){
    f(555);
}

void main(){
    x((int q){ return 0; });
    // or
    x(function int(int q){ return 0; });
    // or
    x(q => 0);
}