2014-01-14 20 views
3

請考慮下面的例子,工作完全正常:this.field語法糖在構造函數參數列表和繼承的字段上。

abstract class Parent { 
    String parentField; 
} 

class Child extends Parent { 
    String childField; 

    Child(parentField, childField){ 
    this.parentField = parentField; 
    this.childField = childField; 
    } 
} 

當我嘗試子構造改變爲:

Child(this.parentField, this.childField); 

我得到:

error: line X pos Y: unresolved reference to instance field 'parentField' Child(this.parentField, this.childField); 

我的問題是:

這是設計決定嗎?錯誤?或缺少值得請求的功能?

回答

3

這是預期的行爲。從Generative Constructors section of the Dart spec.

初始化正式的形式是this.id。如果id不是緊鄰封閉類的實例變量的名稱,那麼這是一個編譯時錯誤。

+1

好的。如果它被記錄,那麼它是一個功能:)你認爲它是如此的目的?爲此,在https://code.google.com/p/dart/issues/entry上創建功能請求是否值得? – fsw

+0

您可以在以下評論中詢問併發布指向已創建問題的鏈接。 –

+1

@fsw對象構造必須按照明確定義的順序完成。你不能在這裏稍微分配一點。在非常簡單的用例中,這可能會起作用,但規則也必須適用於更復雜的配置。 –