Scala:具有匹配和副作用的条件产量?

前端之家收集整理的这篇文章主要介绍了Scala:具有匹配和副作用的条件产量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下内容的正确语法是什么?

var foo = 0
someIterator.foreach{ x => x.property match {
  case "a" => foo += 1
  case "b" => yield "current foo" + foo
}}

即,我正在尝试迭代someIterator.当它匹配一件事时,它应该通过闭包更新局部变量;当它遇到另一个时,它应该产生一些当前状态的推导到结果迭代器,保留连续迭代的状态.

解决方法

您可以使用Option [String],解除并收集.

> 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)
})

Live Demo

猜你在找的Scala相关文章