gpt4 book ai didi

types - 在声明局部变量时,最好在Dart中声明类型或只使用 `var`?

转载 作者:行者123 更新时间:2023-12-04 17:10:28 24 4
gpt4 key购买 nike

在dart中,有一个var,表示dynamic type

声明局部变量时,我可以这样写:

String name = "Freewind";

或者

var name = "Freewind";

起初我以为它们是相同的,因为编辑器应该能够推断出 name的类型是 String,但是我很快发现:

void hello(String name) { print("hello, $name"); }

int n = 123;
hello(n); // editor will give an warning here

var m = 456;
hello(m); // but will not here

我尝试使用DartEditor(基于eclipse)和IDEA,发现 hello(m)均未给出警告。看来他们将 m视为 dynamic,而不是 int,因此他们没有发出警告。

如果我理解正确,那我们应该尽可能地声明类型以获得类型安全检查,对吗?但是我喜欢 var,因为它更短,不需要重复类型信息。

还是没有警告仅仅因为Dart的编辑不够强大而已,我们将来会收到警告吗?

最佳答案

从Dart常见问题解答:

Dart有类型推断吗?

类型推论不是语言规范所指定的,而是实现可以自由执行的事情。重要的是要记住,Dart具有动态类型系统,因此类型推断的作用与Haskell等语言中的作用不同。但是,Dart Editor确实会进行某些类型推断,例如将var用作局部变量时。我们期望Dart VM和dart2js在出于性能或其他原因有用时会使用类型推断。

从Dart样式指南中:

优选使用不带类型注释的var局部变量

现代代码中的方法体往往很短,并且局部变量的类型几乎总是可以从初始化表达式中轻易推断出来的,因此显式类型注释通常只是视觉上的噪音。体面的编辑器可以推断局部变量的类型,并且仍然提供您期望的自动完成和工具支持。

问:在声明局部变量时,最好在Dart中声明类型或只使用var

答:使用'var'的更好方法。

问:或者没有警告仅仅因为Dart的编辑不够强大而已,我们将来会收到警告吗?

答:这可能会在不久的将来出现,因为新的Dart Editor分析器将得到完全实现和改进。

关于types - 在声明局部变量时,最好在Dart中声明类型或只使用 `var`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17501472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com