问题描述
我在几个地方看到以下代码,这些代码描述了Scala中部分函数的使用。
for(int i = 1; i<intervals.size(); i = prev+1){
if(intervals[prev][1] >= intervals[i][0] && intervals[prev][0] <= intervals[i][1]){
if(intervals[prev][1] < intervals[i][1]){
intervals[prev][1] = intervals[i][1];
intervals.erase(intervals.begin()+i,intervals.begin()+(i+1));
}
else{
intervals.erase(intervals.begin()+i,intervals.begin()+(i+1));
}
}else{
prev++;
}
在这里,除法是一个变量,其类型是作为特征的PartialFunction [Int,Int]。我对RHS部分感到困惑。由于变量“ divide”的类型为:PartialFunction [Int,Int],因此需要使用“ new”关键字来实例化它。我不确定这是哪种语法。加上上面如何自动定义isdefined()函数? (isDefined()似乎可用;但隐藏在此处)。
有人可以帮忙吗?
解决方法
在某些情况下,右侧是函数文字。
这是一个文字,就像Int
,Char
,String
在文字前没有new
关键字一样。
函数具有语法
{
case ... => ...
(optionally more cases)
}
预期类型必须是完全已知的。如果期望PartialFunction
,则将其视为PartialFunction。否则,将其视为Function1
对于PartialFunction
变体,isDefinedAt
由案例的模式定义。