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 中的函数字面量。
它是一个文字,就像Int
、Char
、String
在文字前没有new
关键字。
案例中的函数具有语法
{
case ... => ...
(optionally more cases)
}
预期的类型必须是完全已知的。如果需要 PartialFunction
,则将其视为 PartialFunction。否则,它被视为 Function1
对于 PartialFunction
变体,isDefinedAt
由案例的模式定义。
我在几个地方看到了以下描述在 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 中的函数字面量。
它是一个文字,就像Int
、Char
、String
在文字前没有new
关键字。
案例中的函数具有语法
{
case ... => ...
(optionally more cases)
}
预期的类型必须是完全已知的。如果需要 PartialFunction
,则将其视为 PartialFunction。否则,它被视为 Function1
对于 PartialFunction
变体,isDefinedAt
由案例的模式定义。