求解Stream.zip

mwei 2010-12-22
lazy val fib:Stream[Int]=
      Stream.cons(0,Stream.cons(1,fib.zip(fib.tail).map(p=>p._1+p._2)))
fib.take(10).print

output:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, empty

读Programming Scala动物世界那本,对zip不知其原理,求圈子里的网友给予详细说明。Orz
night_stalker 2010-12-23
集合类的 zip:
a:            [a1, a2, a3, ...]
b:            [b1, b2, b3, ...]
a zip b:      [(a1,b1), (a2,b2), (a3,b3), ...]
a zip a.tail: [(a1,a2), (a2,a3), (a3,a4), ...]

mwei 2010-12-23
night_stalker 写道
集合类的 zip:...

一目了然,谢谢ns,原来其他语言里早就有了zip函数。
zip有拉链之意,相同位置之上的会成对出现(不过拉链错开了),任何一边长了都不会继续拉上去,很有意思。
Global site tag (gtag.js) - Google Analytics