簡體   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