如果我正确解释你的问题,你想这样做:
val ex: List[List[Int]] = {
val ex = List(List(1, 2, 3), List(4, 5, 6), List(7, 8, 9))
ex ++ ex
}
这不是一个循环定义,因为内部ex只是遮蔽了外部(如果您使用不同的变量名称会更清楚)。
如果您确实想要递归定义,则需要使用惰性数据结构,例如Stream(您可以尝试使用List,但您会得到NullPointerException)。所以你可以这样写:
val ex: Stream[List[Int]] =
Stream(List(1, 2, 3), List(4, 5, 6), List(7, 8, 9)) #::: (ex take 3)
ex.toList // if it actually needs to be a List, which is probably doesn't
#:::是on的惰性Stream等价物。:::List
如果您追加ex而不是ex take 3thenex将是无限的,您可以使用(ex take 6).toList.
编辑:在阅读@AmigoNico 对您的问题的解释(这可能是正确的解释 - 但谁知道!)之后,您也可以使用该iterate函数执行此操作,例如
List.iterate(List(1,2,3), 3)(_ map (_ * 2))
// List(List(1, 2, 3), List(2, 4, 6), List(4, 8, 12))
// or if you want it infinte:
val xs = Stream.iterate(List(1,2,3))(_ map (_ * 2))
(xs take 3).toList
// result same as above