error Unit不接受scala参数



如何在每次迭代后打印List的元素?

scala> def carry(c: Int, list: List[Int]):List[Int] = (c, list) match {
|
|   case (0, xs) => xs
|
|  case (1, Nil) => List(1)
|
|  case (1, x :: xs) => println(x,xs)((1 - x) :: carry(x, xs))
|
|   case (_, _) => throw new IllegalArgumentException("Invalid input!!!")
|   }
<console>:18: error: Unit does not take parameters
case (1, x :: xs) => println(x,xs)((1 - x) :: carry(x, xs))

println(x, xs)的调用返回一个Unit类型,并且试图用参数(1 - x) :: carry(x, xs)调用返回值。也许你已经知道了。花括号在这里是你的朋友,因为它们可以创建一个包含的表达式。解决方案如下:

case (1, x :: xs) => {println(x, xs); (1 - x) :: carry(x, xs)}

case (1, x :: xs) => {
println(x, xs)
(1 - x) :: carry(x, xs)
}

最新更新