2016-01-22 39 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