例如,我们定义了一个函数,应该将 1、3、42 分别转换为 "foo"、"bar"、"qix" 和所有其他整数到 "X"。
我提出了 2 个实现:该方法f
需要分开,因为它可以在其他上下文中重用。
def f(i: Int): Option[String] = i match {
case 1 => Some("foo")
case 3 => Some("bar")
case 42 => Some("qix")
case _ => None
}
def g(i: Int) : String = f(i).getOrElse("X")
和 :
def f_ : PartialFunction[Int, String] = {
case 1 => "foo"
case 3 => "bar"
case 42 => "qix"
}
def g_(i: Int) : String = f_.orElse { case _ => "X" }(i)
我倾向于选择第二种,因为它避免了许多重复的 Some(...)
WDYT ?