繁体   English   中英

Dart 语言中的“as”关键字有什么作用?

[英]What does the "as" keyword do in Dart language?

我对“as”关键字的使用感到困惑。

它是转换运算符还是别名运算符?

我在互联网上遇到了以下看起来像演员操作员的代码:

var list = json['images'] as List;

这是什么意思?

as在不同的语境中意味着不同的事物。

它主要用作类型转换运算符。 来自Dart 语言之旅

as :类型转换(也用于指定库前缀

它链接到解释如何使用asimport ed 库添加前缀以避免名称冲突。 as被重用于做不同的事情以避免需要额外的关键字。)

只是添加 as 关键字现在被 linter 标记,他们更喜欢你使用像 is 这样的检查

if (pm is Person)
  pm.firstName = 'Seth';

你可以在这里阅读更多https://github.com/dart-lang/linter/issues/145

正如语言之旅所说:

当且仅当您确定对象属于该类型时,使用 as 运算符将对象转换为特定类型。

按照你的例子:

var list = json['images'] as List;

您将在这里使用asjson['images']转换或转换为<List>对象。

从另一个SO 帖子(谈论显式castas ):

as ... 更像是一个断言,如果值类型不匹配 as 会导致运行时异常。

您也可以在导入包时使用它。 一个常见的例子是dart:convert as JSON然后可以达到final foo = JSON.jsonDecode(baz)

它正在铸造,您的代码类似于:

List list = json['images'];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM