此脚本(源代码)可以在生产模式下完美执行。
void main() {
int greeting = "Hello world!";
print(greeting);
}
这是一个传统的hello world示例,在Dart中运行良好。
结果是" Hello world!"。
这个脚本是自足的,因为不需要其他功能,它可以按预期工作。
现在我有一些小问题:
P.S。
作为一名程序员,我感兴趣的不是理论和实践,但我只对基于真实例子的小问题的答案感兴趣(即使它非常小)。
如果我的问题不正确那么我想知道为什么?
因为它们与Dart语言编程直接相关。
答案 0 :(得分:6)
这是有效的,因为在生产模式中会忽略类型。
在检查模式下(仅用于开发),会检查类型并获得异常。
Dart中的类型不是用于运行时,而是用于开发时间,以使工具能够推断代码并显示可能的错误。
这意味着,如果您输入String
或var
,则无关紧要。你不能完全省略它,因为这违反了语法。
可以在生产模式下执行
# ~/dart/playground/bin/dart_valid
$ dart main.dart
Hello world!
在检查模式(开发模式)下失败
# ~/dart/playground/bin/dart_valid
$ dart -c main.dart
Unhandled exception:
type 'String' is not a subtype of type 'int' of 'greeting'.
#0 main (file:///home/zoechi/source/my/dart/playground/bin/dart_valid/main.dart:2:18)
#1 _startIsolate.isolateStartHandler (dart:isolate-patch/isolate_patch.dart:216)
#2 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:115)
pub build
失败,因为它使用的分析器使用类型注释,例如在已检查模式和抛出。