2013-06-24 69 views
0

也許這不是Dart的具體問題。Dart編碼風格

我:

class A { 
    int a; 

    A(this.a); 
} 

class B extends A { 
    String b; 

    B(a, this.b) : super(a); 
} 

所以你看,類A有一個屬性int aB只是延伸A並有一個額外的屬性String b和包裝類C

class C { 
    A c; 

    C(this.c); 

    void doSomething() { 
    if (c is B) { 
     print(c.b); 
    } else { 
     print(c.a);  
    } 
    } 

} 

達特編輯投訴c doesn't have a getter b。你如何處理這個問題?我想擺脫的警告,但我不想屬性b添加到A

回答

1

你可以施放表達。

print((c as B).b); 
1

(c as B)作品,但會做一個動態類型檢查(這將可能是由VM被淘汰)。

如果你只是想刪除警告,不改變就可以分配到正確類型的臨時變量的程序的語義:

void doSomething() { 
    if (c is B) { 
    B b = c; 
    print(b.b); 
    } else { 
    print(c.a); 
    } 
}