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