Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Dart main()函数需要是void main()还是可以省略void类型?_Flutter_Dart - Fatal编程技术网

Flutter Dart main()函数需要是void main()还是可以省略void类型?

Flutter Dart main()函数需要是void main()还是可以省略void类型?,flutter,dart,Flutter,Dart,作为一个完整的初学者学习Dart,我想了解main函数是否需要void类型。在官方语言教程中:示例不包括void关键字/类型。 但在其他地方,我们播种void main(){ 以下两段代码具有相同的输出: main(){ 打印(“你好,世界!”); } 在省道垫上运行良好: (我们没有看到任何编译器警告或建议应添加void) void main(){ 打印(“你好,世界!”); } 无效是没有人质疑的惯例,还是我们可以排除它而不产生任何后果 注意:我知道void关键字/类型的历史,我只是想了

作为一个完整的初学者学习
Dart
,我想了解
main
函数是否需要
void
类型。在官方语言教程中:示例不包括
void
关键字/类型。 但在其他地方,我们播种
void main(){

以下两段代码具有相同的输出:

main(){
打印(“你好,世界!”);
}
在省道垫上运行良好:
(我们没有看到任何编译器警告或建议应添加
void

void main(){
打印(“你好,世界!”);
}
无效
是没有人质疑的惯例,还是我们可以排除它而不产生任何后果

注意:我知道
void
关键字/类型的历史,我只是想了解我是否可以安全地从更高级的程序中省略
void
,或者是否需要它。


声明无类型与声明无效相同

我不确定Flitter/Dart是否希望
void
用于某种“识别”,但我怀疑它。如果它运行,它应该是100%相同的。

上面说:

18.4脚本 脚本是一个库,其导出的命名空间(18.2)包含顶级 名为
main
的函数声明,具有零个、一个或两个必需参数

规范对其参数的名称和arity(以及类型)提出了要求。对其返回类型没有要求,因此使用不同的类型(例如
动态
,如果省略
无效
),将不会产生任何效果。

具有以下规则:

始终声明返回类型
()

不要声明方法返回类型

声明方法或函数时,请始终指定返回类型。声明函数的返回类型有助于改进代码库,使分析器能够更充分地检查代码在运行时可能出现的错误

坏:

main() { }

_bar() => _Foo();

class _Foo {
  _foo() => 42;
}
void main() { }

_Foo _bar() => _Foo();

class _Foo {
  int _foo() => 42;
}
好:

main() { }

_bar() => _Foo();

class _Foo {
  _foo() => 42;
}
void main() { }

_Foo _bar() => _Foo();

class _Foo {
  int _foo() => 42;
}

返回类型确实无关紧要,但是声明无返回类型等同于使用
dynamic
的返回类型,您可以通过在Dartpad中检查类型或运行
main(){print(main.runtimeType);}
来验证它。非常简洁的回答,James,感谢链接到规范!