2016-01-22 76 views
2

a good question它说我们应该流/视图或迭代我们的集合,使它们按需。很明显。我只是不明白我应该怎么应用.view.iterate在下面的演示生成迭代器而不是递归列表

val l1 = List("10", "00", "0") 
def gen(depth: Int): Iterable[String] = if (depth == 1) l1 else { 
    for (sub <- gen(depth-1); item <- List(depth + sub, sub+sub, sub)) yield item 
} 

我应该把它们应用到gen(depth-1)List(depth+..)

顺便说一句,我应该内联l1(depth == 1) l1 else?它不在别的地方使用。我只是担心它会为每一片叶子创造一个新的名单。

回答

0

我将不得不尝试它,但我会说List(depth+..).view,因为你不会使用相同的值超过一次。我认为它会给你一种DFS遍历,因为你有递归。

是的,我不会内联它,但像这样的生活l1。我甚至会做val l1 = List("10", "00", "0").view