以下内容的正确语法是什么?
var foo = 0
someIterator.foreach{ x => x.property match {
case "a" => foo += 1
case "b" => yield "current foo" + foo
}}
Run Code Online (Sandbox Code Playgroud)
即,我正在尝试迭代someIterator.当它匹配一件事时,它应该通过闭包更新局部变量; 当它遇到另一个时,它应该产生一些当前状态的推导到结果迭代器,保留连续迭代的状态.
你可以使用Option[String],unlift和collect.
unlift 采用一个返回选项的函数并将其转换为部分函数.collect就像map,除了它只考虑定义部分函数的元素.以下示例演示了该方法:
import Function.unlift
var foo = 0
someIterator.map(_.property).collect(unlift {
case "a" => foo += 1; None
case "b" => Some("current foo" + foo)
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
628 次 |
| 最近记录: |