小编csj*_*s24的帖子

为什么我被允许将一个返回非Unit的函数传递给一个带有返回Unit的函数的方法?

这是代码:

def filterAcc(p: Tweet => Boolean, acc: TweetSet): TweetSet = {
  foreach(tweet =>
    if(p(elem)) acc.incl(elem)
    else acc.incl(elem))
  acc
}

def foreach(f: Tweet => Unit): Unit = {
  f(elem)
  left.foreach(f)
  right.foreach(f)
}

def incl(x: Tweet): TweetSet = {
  if (x.text < elem.text) new NonEmpty(elem, left.incl(x), right)
  else if (elem.text < x.text) new NonEmpty(elem, left, right.incl(x))
  else this
}
Run Code Online (Sandbox Code Playgroud)

foreachtake f,返回一个Unit.
incl返回一个TweetSet.
我传入的函数似乎filterAcc返回a TweetSet,因为if和else调用中的最后一行incl.是这样的情况,即使一个值显示为返回a的函数的最后一行Unit,它也不会返回该值?对不起,如果这是一个基本问题,我是一个全新的程序员.

scala

4
推荐指数
1
解决办法
109
查看次数

标签 统计

scala ×1