将变量类型设置为Function
或Function()
有什么区别?
Function function1 = () { print("1"); };
Function() function2 = () { print("2"); };
// Both works
function1();
function2();
类型Function
只是说您的变量指向Function
,但不要求此变量指向具有特定签名的函数。
Function()
实际上在我的机器上发出了分析器警告,因为这并不完全正确。相反,它应该是void Function() function2 = () { print("2"); };
。这指定function2
必须指向一个不返回任何内容且不接受任何参数的函数。
最后一个也是如果使用var
或final
而不是指定类型,Dart本身将声明的内容。
如果你改变方法来接受一个论点,差异就会变得很明显:
Function function1 = (int a) { print("1"); }; // works
void Function() function2 = (int a) { print("2"); }; // error