簡體   English   中英

如何在dart構造函數初始化列表中區分相同的變量名?

[英]How to distinguish the same variable name in dart constructor initializor list?

由於 Container 小部件有一個約束實例變量 。但是構造函數也會有一個約束參數。

在初始化列表中,我們可以看到這樣的代碼:

constraints = (****) constraints;

那么我們如何知道哪些約束是對實例變量的引用,哪些是對函數參數的引用呢? 在此處輸入圖片說明

名稱沖突在構造函數初始值設定項列表中不是問題。 每個初始化的左側可能只是一個成員變量。 Dart 語言規范

初始化列表

初始化列表以冒號開頭,由逗號分隔的各個初始化列表組成。

[...]

v = e形式的初始化器等價於this形式的初始化器。 v = e ,兩種形式都稱為實例變量初始值設定項

同時,右側的表達式無法訪問this ,因此永遠不能引用成員變量。 所以:

class Foo {
  int x;

  Foo(int x) : x = x;
}

沒有歧義:成員變量x是從x參數初始化的。

名稱沖突在構造函數體中可能是一個問題,但是:

class Foo {
  int x;

  Foo(int x) : x = x {
    x *= 10; // This modifies the local `x` parameter.
  }
}

在這種情況下,如果需要使用成員變量而不是同名參數,則構造函數主體必須注意顯式使用this.x

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM