2014-10-22 89 views
4

我想將onElse函數添加到itterator.firstWhere方法,但我無法獲得正確的語法。將orElse函數添加到firstWhere方法

我已經試過類似

List<String> myList = 

String result = myList.firstWhere((o) => o.startsWith('foo'), (o) => null); 

但是編譯器的

1 positional arguments expected, but 2 found

一個錯誤,我相信這是一個簡單的語法問題,但它有我難倒

回答

7

'orElse'是一個命名的可選參數。

void main() { 
    checkOrElse(['bar', 'bla']); 
    checkOrElse(['bar', 'bla', 'foo']); 
} 

void checkOrElse(List<String> values) { 
    String result = values.firstWhere((o) => o.startsWith('foo'), orElse:() => ''); 

    if (result != '') { 
    print('found: $result'); 
    } else { 
    print('nothing found'); 
    } 
} 
+0

產生編譯錯誤「參數類型‘(動態)→’不能被分配給參數類型‘()→字符串’」 – richard 2014-10-24 08:42:33

+0

此外返回'從null''orElse'是與未傳遞'orElse'參數完全相同。您需要返回一個值'!= null',以使其按預期工作。我確實只關注你的實際問題,因爲我很困難地參與了一項艱鉅的任務。我會檢查代碼並更新我的答案。 – 2014-10-24 08:46:02

+0

我更新了我的答案(測試代碼) – 2014-10-24 08:50:38