我想在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()
任何人都可以告诉我我做错了什么吗?
答案 0 :(得分:3)
;
关闭语句并有效地丢弃结果,而是使用::
来创建新的List
,其结果为y * 2
和doubleList(ys)
def doubleList(xs: List[Int]): List[Int] =
xs match {
case y :: ys =>
y * 2 :: doubleList(ys)
case Nil => xs
}
P.S。你不必在scala的一行末尾加;
。