Scala高阶函数的细节

时间:2016-07-06 14:17:15

标签: scala higher-order-functions

我正在学习Scala高阶函数。我正在研究an example这是一个班级;有一种方法可以接收函数和值参数并返回一个值。函数为p: Tweet => Boolean,方法实现如下。我想知道p函数的实现在哪里。

class NonEmpty(elem: Tweet, left: TweetSet, right: TweetSet) extends TweetSet {
  def filterAcc(p: Tweet => Boolean, acc: TweetSet): TweetSet = {
    if (p(elem)) {
      left.filterAcc(p, acc.incl(elem))
      right.filterAcc(p, acc.incl(elem))  
    } else {
        left.filterAcc(p, acc)
        right.filterAcc(p, acc)
    }                    
}

1 个答案:

答案 0 :(得分:1)

  

我想知道p函数的实现在哪里

如果您进一步深入了解课程定义,您会在union

中看到p的其中一个实现
def union(that: TweetSet): TweetSet = {
  this.filterAcc(elem => true, that)
}

对于高阶函数,该方法的调用者负责提供他希望运行的函数的实现。您可以在Scalas集合库中查看常见用例,例如mapflatMapfilter等。