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
Dynamic Dart 2中的“动态类型”是否可以指定多个不同类型的值?_Dynamic_Dart_Type Inference_Dart 2 - Fatal编程技术网

Dynamic Dart 2中的“动态类型”是否可以指定多个不同类型的值?

Dynamic Dart 2中的“动态类型”是否可以指定多个不同类型的值?,dynamic,dart,type-inference,dart-2,Dynamic,Dart,Type Inference,Dart 2,Dart 2中的动态类型可以分配给差异类型的值吗?编译如何推断它们 例如,dart 2中的x类型是什么,它是否编译 dynamic x = 1; x = x + "Hello"; 在Dart 2中,dynamic是一种特殊类型的签名—某种程度上表示任何东西 在上面的示例中,x是dynamic。在运行时,在第1行,它将是一个int。因此,如果您编写print(x是int),它将是true。但是,从静态角度看,它是动态的。您将无法完成代码(请尝试在IDE中键入x.) 下一行是运行时错误(如果键入正

Dart 2中的动态类型可以分配给差异类型的值吗?编译如何推断它们

例如,dart 2中的x类型是什么,它是否编译

dynamic x = 1;
x = x + "Hello";

在Dart 2中,
dynamic
是一种特殊类型的签名—某种程度上表示任何东西

在上面的示例中,
x
dynamic
。在运行时,在第1行,它将是一个int。因此,如果您编写
print(x是int)
,它将是
true
。但是,从静态角度看,它是动态的。您将无法完成代码(请尝试在IDE中键入
x.

下一行是运行时错误(如果键入正确,则为静态错误)


根据我的经验,在Dart 2中,您很少使用
动态
关键字。

在Dart 2中,
动态
是一种特殊类型的签名,可以表示任何内容

在上面的示例中,
x
动态的
。在运行时,在第1行,它将是一个int。因此,如果您编写
print(x是int)
,它将是
真的
。但是,静态地说,它是
动态的
。您将无法完成代码(尝试在IDE中键入
x.

下一行是运行时错误(如果键入正确,则为静态错误)


根据我的经验,使用Dart 2时,您很少会使用
动态
关键字。

动态类型是特殊的。它真正的意思是“相信我,我知道我在做什么”,并关闭一些静态类型检查

作为类型约束,
dynamic
实际上等同于
Object
(您可以使用
dynamic
类型为变量指定任何值),但是当您尝试调用对象上的方法时,您可以尝试,即使
对象上不存在该方法

在这种情况下,
dynamic x=1;
起作用,因为
1
可分配给
对象。
第2行失败。
x=x+“Hello”
尝试调用
1
上的
+
方法,将
“Hello”
作为参数,即使
+
运算符存在,参数的类型也不正确

你说“相信我,我知道我在做什么”,所以编译器让你试试——没有静态警告或错误。你输入错误,所以运行时会在事情变得不正常之前阻止你。
您也可以编写
x.argleBargleGlopGlyf(42)
,即使程序中没有
argleBargleGlopGlyf
方法,编译器也不会阻止您。强大的静态能力带来强大的动态责任。

动态
类型是特殊的。它确实意味着“相信我,我知道我在做什么”,它会关闭一些静态类型检查

作为类型约束,
dynamic
实际上等同于
Object
(您可以使用
dynamic
类型为变量指定任何值),但是当您尝试调用对象上的方法时,您可以尝试,即使
对象上不存在该方法

在这种情况下,
dynamic x=1;
起作用,因为
1
可分配给
对象。
第2行失败。
x=x+“Hello”
尝试调用
1
上的
+
方法,将
“Hello”
作为参数,即使
+
运算符存在,参数的类型也不正确

你说“相信我,我知道我在做什么”,所以编译器让你试试——没有静态警告或错误。你输入错误,所以运行时会在事情变得不正常之前阻止你。 您还可以编写
x.argleBargleGlopGlyf(42)
,即使程序中没有
argleBargleGlopGlyf
方法,编译器也不会阻止您。强大的静态能力带来强大的动态责任