2014-10-22 72 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