作爲一個例子,我們定義一個函數,它應該分別轉換爲「foo」,「bar」,「qix」和所有其他整數爲「X」 。如何知道何時使用PartialFunction與返回選項
我想出了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)
我傾向於選擇第二個,因爲它避免許多重複的部分(...)
WDYT?
沒有人說你必須在比賽中使用'Some' – 2014-09-29 07:58:03
請注意,你可以提升部分功能。在你的情況'f_.lift == f' – knutwalker 2014-09-29 08:02:18