在熟悉Dart和回调方法的同时,我尝试在dartpad中运行以下代码。但是,函数 fIn() 并未执行。谁能告诉我为什么吗?
void main() {
int counter = 1;
void secondMethodCallback() {
print(counter);
counter++;
print(counter);
}
// As a Lambda-Expression its not working; only as "secondMethodCallback"
firstMethod(counter, () => secondMethodCallback);
}
void firstMethod(int intIn, Function() fIn){
print("in firstMethod");
fIn();
}
当我在没有像这样的 Lambda 表达式的情况下传递“secondMethodCallback”时,它会起作用:
firstMethod(counter, secondMethodCallback);
第二个问题:如果我在firstMethod中写“Function”或“Function()”,似乎没有什么区别。谁能解释一下吗?
第三个问题:是否有可能在第一个方法中操纵“计数器”?
第四个问题:当在firstMethod中执行时,是否可以在fIn中操作“intIn”?
致以最诚挚的问候并非常感谢您的帮助:)
// As a Lambda-Expression its not working; only as "secondMethodCallback"
firstMethod(counter, () => secondMethodCallback);
您有一个返回函数对象的 lambda 表达式。你错过了
()
来称呼它:
// As a Lambda-Expression its not working; only as "secondMethodCallback"
firstMethod(counter, () => secondMethodCallback());