Scala 中的部分函数

Partial function in scala

我在几个地方看到了以下描述在 Scala 中使用偏函数的代码。

val divide: PartialFunction[Int, Int] = {
    case d: Int if d != 0 => 42 / d
}

这里,divide是一个类型为PartialFunction[Int,Int]的变量,是一个trait。我对 RHS 部分感到困惑。由于变量“divide”的类型为:PartialFunction[Int,Int] ,因此需要使用“new”关键字对其进行实例化。我不确定这是哪种语法。加上上面自动定义的 isdefined() 函数是如何实现的? ( isDefined() 似乎可用;但它隐藏在那里)。

有人可以帮忙吗。

right-hand-side 是 cases 中的函数字面量。

它是一个文字,就像IntCharString在文字前没有new关键字。

案例中的函数具有语法

{
  case ... => ...
  (optionally more cases)
}

预期的类型必须是完全已知的。如果需要 PartialFunction,则将其视为 PartialFunction。否则,它被视为 Function1

对于 PartialFunction 变体,isDefinedAt 由案例的模式定义。