2012-03-17 33 views
1

考慮下面的類,飛鏢編輯器(建設5549)給了我一些相互矛盾的反饋(每評論在構造函數體):不一致的錯誤從DART編輯報告關於最終場

class Example { 
    final int foo; 

    Example() : 
    foo = 0 
    { 
    foo = 1; // 'cannot assign value to final variable "foo"' 
    this.foo = 2; // ok 
    } 
} 

更容易混淆,它會很高興地爲這兩行生成等效(工作)的javascript。這種情況似乎和方法一樣,也和構造函數一樣。這尤其導致我相信它在兩種情況下都被禁止。

Dart Style Guide建議使用公共最終字段而不是私有字段與公共獲得者。我理論上喜歡這一點,但不重要的成員建設不能真正進入初始化列表。

我錯過了前者被報告爲錯誤的正當理由,而後者不是?或者我應該立即提交一個錯誤?

回答

1

這無疑是在JavaScript產生一個錯誤,如果你運行的VM達特如下:

main() { 
    new Example(); 
} 

class Example { 
    final int foo; 

    Example() : foo = 0 { 
    foo = 1;  // this fails in the dart vm 
    this.foo = 2; // this also fails in the dart vm 
    } 
} 

然後拒不執行這兩個行富= 1this.foo = 2。這符合規範要求(如果我正確讀取)最終字段在構造函數體中是最終的。

+0

謝謝。我希望我可以選擇在Windows上運行Dartium。我繼續提出一個錯誤:https://code.google.com/p/dart/issues/detail?id=2213 – Neverender 2012-03-17 23:45:20

+2

@Neverender我相信Dartium應該在Windows上運行http://dartwatch.com/index。 PHP/2012/03/dartium換窗戶,二進制文件,現在可用/ – 2012-03-18 11:58:28