【发布时间】:2014-06-30 12:22:47
【问题描述】:
假设我有以下功能
def foo(x: Int): Option[String] = ...
def bar(s: String): Option[String] = ...
和
def f(s: String): String = ...
def g(s: String): String = ...
我想将所有这些函数组成如下:
def qux(x: Int): String = {
val s1 = foo(x).fold("defaultFoo") { str => f(str) }
bar(s1).fold("defaultBar") { str => g(str) }
}
在我看来,qux 函数看起来并不特别优雅,我想知道如何简化它。你建议怎么写qux?
【问题讨论】:
-
str = g(str)应该是str => g(str)吗? -
@DonRoby 是的,我正在修复代码。
-
x.fold(default)(x => f(x)) == x.fold(default)(f)让它变得更好 -
@sschaef 感谢您的更正。你是对的。