Stream(無限リストもしくは「リストを作る関数オブジェクトをラップしたリスト by keisuken」)
結構便利かも・・・
val lst = List(0,1,2,3,4,5,6,7,8,-1,10,11,12,13) Stream.from(2).takeWhile{ lst(_) != -1 }.foreach {i => println(lst(i)) }
と、すると
2 3 4 5 6 7 8
となる。
さらに、
Stream from 2 takeWhile ( lst(_) != -1 ) foreach {i => println(lst(i)) }
と、かなり自然にも書ける。
ちょっとパズル的ですが、
(1,1),(1,2),(1,3),(2,1),(2,2)...
は以下のようにすればいい。
val s0 = Stream.from(3) val s1 = s0.map {_ / 3} val s2 = s0.map {_ % 3 + 1} val s = s1.zip(s2)