foo += 1 cas-6ren">
gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 23:45:45 26 4
gpt4 key购买 nike

以下内容的正确语法是什么?

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

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

最佳答案

您可以使用 Option[String] , unliftcollect .

  • 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:具有匹配和副作用的条件 yield ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29566190/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com