我在以下几个地方看到了描述Scala中部分函数使用的代码。
val divide: PartialFunction[Int, Int] = {
case d: Int if d != 0 => 42 / d
}
这里,divide是一个变量,其类型为PartialFunction[Int,Int],这是一个特性。我对RHS部分感到困惑。由于变量"0"的类型;划分";是:PartialFunction[Int,Int],它需要通过使用";新的";关键字。我不确定这是什么语法。另外,isdefined((函数是如何自动定义的?(isDefined((似乎可用;但它隐藏在那里(。
有人能帮忙吗。
在某些情况下,右侧是一个函数文字。
它是一个文本,就像Int
、Char
、String
在文本之前没有new
关键字一样。
案例中的函数具有语法
{
case ... => ...
(optionally more cases)
}
所需的类型必须是完全已知的。如果期望PartialFunction
,则将其作为PartialFunction。否则,它被视为Function1
对于PartialFunction
变体,它的isDefinedAt
是由案例的模式定义的。