Dart假设是实用的,直观的等等.我想知道为什么如果返回int,顶级main()不会设置exitcode?
我知道,您可以通过dart:io.exitCode=或使用它来设置它dart:io.exit().
问题是为什么语言设计师决定放弃这种流行的惯例?
#!/path/to/dart --checked
int main() {
int myExitCode = 5;
return myExitCode;
}
Run Code Online (Sandbox Code Playgroud)
它返回0(如文档中所述),但在命令行界,它只是愚蠢的.它甚至没有警告你(编译器检查模式,dartanalyzer).脚本只是默默地返回0.它背后有什么理由吗?
更新:
提案错误:https://code.google.com/p/dart/issues/detail?id = 21639
我对此的理解是,虽然main()可能会完成执行,但您可能还有其他尚未完成的异步工作.您可以使用exit从dart:ioLIB立即返回一个退出代码.
import 'dart:io';
main(){
exit(42);
}
Run Code Online (Sandbox Code Playgroud)
有关退出的API文档的更多信息:https://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart : io#id_exit