2015-02-08 135 views
1

我正在使用Dart,並希望利用靜態類型檢查,通過擴展String類(我知道你不能)。
說我有:
dart擴展字符串類型用於類型檢查

void putInfo(String PersonName,String GroupName){ 

但當然,我可能會不小心不正確地

putInfo("grade2","Fred Bloggs"); 

調用它是否有可能定義類型,如「PERSONNAME」和「組名」,以 必須有

void putInfo(Personname name,Groupname group){ 

抓s uch錯誤?當然,可以適用於整數太(寬度-INT VS高度-INT),日期等
預先感謝
歡呼
史蒂夫

回答

0

的這是例如去,但在DART唯一很容易你能做的就是創建一個新班級。

如果你有很多這樣的類並使用它們,這會嚴重地損害性能。

您不能實現多個運算符,因爲只有其中一些運算符可以具有自定義實現。

總的來說,我會勸阻在飛鏢中做。

+1

我知道我不應該只是說謝謝(呃,我認爲),但是,無論如何感謝,併爲以前的幫助/建議。永遠感激。史蒂夫 – Lymp 2015-02-08 17:09:58

2

你不能以你想要的方式來擴展字符串,但爲了你的目的,你不需要。

可以使用指定的參數相同類型的參數來區分:

void putInfo({String personName, String groupName}) 

然後調用它:

putInfo(personName: 'Fred Bloggs', groupName: 'grade2') 

一個缺點這種方法的是命名參數是可選的,所以現在可以在沒有任何參數的情況下調用putInfo。另一個問題是,這只是一個有用的提示,並不會阻止某人用錯誤的參數調用putInfopersonName: 'grade2)。

一個更好的辦法是對參數進行一些驗證:

void putInfo(String personName, String groupName) { 
    assert(personName.contains(' ')); 
    assert(!groupName.contains(' ')); 
    // More asserts validating that your arguments are correct 
} 

您也可以結合這兩種方法,使用命名參數提示,然後斷言趕上方法被稱爲與錯誤的論據。