gpt4 book ai didi

scala - 在Scala中执行map/getOrElse返回单位的惯用方式是什么?

转载 作者:行者123 更新时间:2023-12-04 08:59:03 25 4
gpt4 key购买 nike

如果值是Some(...),则产生副作用的最惯用的方法是什么;如果值是None,则是另一种副作用的最惯用的方法。这是我目前倾向于写的内容:

def doSideEffectA(value: Int) {
// ...
}

def doSideEffectB() {
// ...
}

def doSideEffect(valueOption: Option[Int]) {
valueOption map { value =>
doSideEffectA(value)
} getOrElse {
doSideEffectB()
}
}

我的问题是,如果valueOption为None时我不必执行任何操作,则是这样写的:
def doSideEffectNothingIfNone(valueOption: Option[Int]) {
valueOption foreach { value =>
doSideEffectA(value)
}
}

map/getOrElse通常不在副作用上下文中使用,而foreach则使用。我对valueOption map {...} getOrElse {...}返回Unit不太满意,因为我实际上从我的Option [Int]中没有“得到”任何东西。

最佳答案

Kim Stebel所说的:模式匹配是一个简单的解决方案。

valueOption match {
case Some(value) => doSideEffectA(value)
case None => doSideEffectB()
}

关于scala - 在Scala中执行map/getOrElse返回单位的惯用方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13268017/

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