为什么这个清单是空的

时间:2016-04-17 22:33:02

标签: list scala match

我想在scala中创建一个使用“match ... case”来加倍列表值的函数。

例如:

doubleList(List(2,1,4,5))
//> res0: List[Int] = List(4, 2, 8, 10)

我写了这个函数:

def doubleList(xs: List[Int]): List[Int] =
    xs match {
      case y :: ys =>
        y * 2; doubleList(ys);
      case Nil => xs;
    }

但结果我得到一个空列表:

//> res0: List[Int] = List()

任何人都可以告诉我我做错了什么吗?

1 个答案:

答案 0 :(得分:3)

;关闭语句并有效地丢弃结果,而是使用::来创建新的List,其结果为y * 2doubleList(ys)

def doubleList(xs: List[Int]): List[Int] =
  xs match {
    case y :: ys =>
      y * 2 :: doubleList(ys)
    case Nil => xs
  }

P.S。你不必在scala的一行末尾加;