flutter - Dart main()函数是否需要为void main()或可以省略void类型?

标签 flutter dart

作为一个完整的初学者学习Dart,我想了解void函数是否需要main类型。在官方语言浏览:https://dart.dev/guides/language/language-tour#a-basic-dart-program中,示例不包括void关键字/类型。
但是在其他地方,我们播种void main() { ...

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

main() {
  print('Hello World!');
}

在Dart Pad上运行良好:https://dartpad.dartlang.org/fa6f6e5a7b9406e88b31a17e82655ef8
(我们看不到任何编译器警告或建议添加void的建议)

void main() {
  print('Hello World!');
}

void 是一个没有人质疑的约定,还是我们可以排除它而没有任何后果?

注意:我知道void关键字/类型的历史,我只是想了解我是否可以安全地从更高级的程序中省略void或是否需要。
  • https://en.wikipedia.org/wiki/Void_type
  • https://medium.com/flutter-community/the-curious-case-of-void-in-dart-f0535705e529
  • https://medium.com/dartlang/dart-2-legacy-of-the-void-e7afb5f44df0
  • 最佳答案

    Dart 2.2 language specification说:

    18.4 Scripts

    A script is a library whose exported namespace (18.2) includes a top-level function declaration named main that has either zero, one or two required arguments.



    该规范对其参数的名称和类型(和类型)施加了要求。对其返回类型没有要求,因此使用其他类型(例如dynamic,如果您省略void将会是这种类型)将无效。

    关于flutter - Dart main()函数是否需要为void main()或可以省略void类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62346301/

    相关文章:

    Flutter 如何使AppBar条子标题垂直居中?

    firebase - 如何在 Flutter 中记录 Firebase Analytics 事件

    flutter - 如何在没有 RawKeyboardListener 的情况下检测 flutter 中的按键

    flutter - 如何将CSS规则转换为Flutter样式

    firebase - 是 Firebase 音乐流应用程序的理想选择。 ( flutter )

    html5-canvas - 如何在Dart上将调整大小的图像绘制到矩形

    android - 如何在 Flutter 中绘制矢量形状?

    firebase - 将应用程序链接到 Firebase Crashlytics 时的依赖性问题 - maven/android/flutter

    Flutter expansionTile 标题填充

    dart - BuiltList 和 List.unmodifiable 之间的区别