何时在 Dart 中使用 num

mFe*_*ein 15 dart

我是 Dart 的新手,我可以看到 Dart 有num哪个是intand的超类double(并且只有这两个,因为子类化num到其他任何东西都是编译时错误)。

到目前为止,我看不到使用num代替intor 的任何好处double,是否有num更好甚至推荐的情况?还是只是为了避免考虑数字的类型,以便编译器为我们决定数字是 anint还是 a double

Sae*_*bil 14

例如在 Dart 2.1 之前的一个好处:

假设您需要定义一个双变量,例如,

double x ;
Run Code Online (Sandbox Code Playgroud)

如果您将 x 定义为双精度值,则当您将其分配给它的值时,您必须指定它,例如 9.876。

x = 9.876;
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都很好。

现在您需要为其分配一个值,例如 9

你不能这样编码

x = 9;  //this will be error before dart 2.1
Run Code Online (Sandbox Code Playgroud)

所以你需要像这样编码

x = 9.0;
Run Code Online (Sandbox Code Playgroud)

但是如果你将 x 定义为 num

您可以使用

x = 9.0;
Run Code Online (Sandbox Code Playgroud)

x = 9;
Run Code Online (Sandbox Code Playgroud)

所以这是避免 dart 中整数和双精度类型之间的这些类型不匹配错误的便捷方法。

两者都是有效的。

这是 Dart 2.1 之前的情况,但仍然可以帮助解释这个概念

检查可能是相关的

  • 在您的示例中,“9”将被解释为双“9.0”,但我不确定“num”是否也这样做。可以使用 `num` 的一种情况是用于 Javascript 互操作,因为 JS 没有区别。考虑到 Dart 最初被设计为 JS 的替代品(但几年前放弃了这个想法),它可能只是为了这个目的而被包含在内。 (2认同)