我想创建一个List(1, List(2, 3))
函数,它将获取各种深度列表并将其转换为平面列表。
例如,对于整数,可以List(1, 2, 3)
并返回def flatten(list: List[???]): List[T]
。
如何正确声明此功能?
Page_Unload
答案 0 :(得分:2)
您似乎必须使用Any
,因为列表的深度未知。
def flatten(input: List[Any]): List[Any] =
input match {
case Nil => Nil
case head :: tail =>
head match {
case list: List[_] => flatten(list) ::: flatten(tail)
case elem => elem :: flatten(tail)
}
}
scala> flatten(List(1, List(2, 3)))
res0: List[Any] = List(1, 2, 3)