gpt4 book ai didi

scala - 一起使用两个 Option 实例的正确方法

转载 作者:行者123 更新时间:2023-12-04 16:39:00 25 4
gpt4 key购买 nike

当我有一个 Option[T]例如,在 T 上执行任何操作都非常容易。使用一元操作,例如 map()flatMap() .这样我就不必检查它是否已定义或为空,并将操作链接在一起最终得到 Option[R]结果 R .

我的困难是是否有类似的优雅方式在两个 Option[T] 上执行函数实例。

让我们举一个简单的例子,我有两个值,xy类型 Option[Int] .如果它们都被定义了,我想得到它们中的最大值,或者如果只定义了一个,我想得到它们中的最大值,以及 None如果没有定义。

如果不涉及大量 isDefined,如何优雅地写这个内部检查 map()第一个 Option ?

最佳答案

你可以使用这样的东西:

def optMax(op1:Option[Int], op2: Option[Int]) = op1 ++ op2 match {    
case Nil => None
case list => list.max
}

或者一个更好的:
def f(vars: Option[Int]*) = (for( vs <- vars) yield vs).max

@jwvh,感谢您的良好改进:
def f(vars: Option[Int]*) = vars.max

关于scala - 一起使用两个 Option 实例的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33635926/

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