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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
Dart 什么';在创建实例时,通常在工厂构造函数中使用as的好处是什么_Dart - Fatal编程技术网

Dart 什么';在创建实例时,通常在工厂构造函数中使用as的好处是什么

Dart 什么';在创建实例时,通常在工厂构造函数中使用as的好处是什么,dart,Dart,有谁能告诉我在上述代码中使用作为有什么好处吗?这取决于分析仪的配置方式,以及您是否在analysis\u options中禁用了隐式强制转换。yaml: Product( id: map['id'], ) 代码中的问题是map的类型被定义为map,因此我们不知道编译时map中的值的类型。如果我们禁用了隐式转换,我们就不能只将动态分配到int变量中,而不使用as进行任何隐式类型转换 建议使用implicit cast:false(和implicit dynamic:false)使分析器对您

有谁能告诉我在上述代码中使用
作为
有什么好处吗?

这取决于分析仪的配置方式,以及您是否在analysis\u options中禁用了
隐式强制转换。yaml:

Product(
  id: map['id'], 
)
代码中的问题是
map
的类型被定义为
map
,因此我们不知道编译时map中的值的类型。如果我们禁用了隐式转换,我们就不能只将
动态
分配到
int
变量中,而不使用
as
进行任何隐式类型转换

建议使用
implicit cast:false
(和
implicit dynamic:false
)使分析器对您的键入更加严格,这样既可以生成更可读的代码,又只能捕获将类型强制转换为其他类型时的错误,而不知道最终可能会导致运行时错误

文档中有更多关于:

这也是我的第一个想法,我实际上使用的是pedantic软件包,但当我不使用
as
时,它不会给我任何警告或错误。我在
1.9.0
version上,我可以看到pedantic包实际上没有禁用
implicit cast
implicit dynamic
:。我仍然认为您找到代码示例的项目已经禁用了这两个功能。我在flatter.dev网页上发现了这种代码,它们不遵循pedantic,因为您会看到它们一直在使用类似
int x=10
。但正如我们得出的结论,pedantic与此无关。但通常认为,在代码中至少使用
隐式强制类型转换:false
,这是一件好事,您也可以在多个颤振指南中看到。另外,
implicit cast:false
将是NNBD登陆时的默认值,因此这也是您编写示例的另一个原因,您假设该功能已关闭:@iDecode使用
as
可以清楚地表明将要进行类型转换,从而更容易发现运行时错误可能发生的位置。我不喜欢对任何东西自动输入
动态
。特别是当我进行代码审查时,我需要知道什么时候发生了可能导致运行时异常的事情。这也是我们使用
的原因具有空安全性。这是为了明确我们在哪里做的事情,在哪里分析仪不能保证任何东西。
Product(
  id: map['id'], 
)
analyzer:
  strong-mode:
    implicit-casts: false