gpt4 book ai didi

scala - 有没有像 Scala 内置的 Haskell 的 'maybe' 函数?

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

我正在寻找的是这个功能:

def maybe[A, B](a: Option[A])(f: A => B)(g: () => B): B = a match 
{
case Some(x) => f(x)
case None => g()
}

它在 Haskell 前奏中,所以我想它可能在 Scala 标准库中的某个地方,而我刚刚错过了它。我讨厌在项目中重新编码它,所以我想知道是否有人知道它在哪里,或者它是否确实不存在。或者有没有更好的方法来获得这个功能?

最佳答案

其他答案给了map + getOrElse作品。只是为了记录,您可以“添加”一个 maybe函数到 Option通过以下方式:

implicit def optionWithMaybe[A](opt: Option[A]) = new {
def maybe[B](f: A=>B)(g: =>B) = opt map f getOrElse g
}

值得注意的是,当函数参数放在最后时,Scala 中高阶函数的语法通常更好。因此,一种更好的组织方式 maybe如下:
def maybe[B](g: =>B)(f: A=>B) = opt map f getOrElse g

这可以按如下方式使用:
val opt: Option[String] = ...
opt.maybe("") { _.toUpperCase }

关于scala - 有没有像 Scala 内置的 Haskell 的 'maybe' 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1244014/

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