我知道
Scala的列表有一个
map的签名(f:(A)=> B)实现:List [B]和一个带有签名的
foreach实现(f:(A)=> Unit):Unit寻找接受多个迭代的东西,与Python
map接受多个迭代的方式相同.
我正在寻找具有(f:(A,B)=> C,Iterable [A],Iterable [B])的签名的东西:Iterable [C]或等价物.有没有图书馆存在或类似的方式做类似的?
编辑:
如下所示,我可以做到
val output = myList zip( otherList ) map( x => x(0) + x(1) )
解决方法
在scala 2.8中,有一种叫做Tuple2& Tuple3避免创建临时收集.
以下是一些示例用例:
以下是一些示例用例:
Welcome to Scala version 2.8.0.r21561-b20100414020114 (Java HotSpot(TM) Client VM,Java 1.6.0_18). Type in expressions to have them evaluated. Type :help for more information. scala> val xs = 0 to 9 xs: scala.collection.immutable.Range.Inclusive with scala.collection.immutable.Range.ByOne = Range(0,1,2,3,4,5,6,7,8,9) scala> val ys = List.range(0,10) ys: List[Int] = List(0,9) scala> val zs = Array.range(0,10) zs: Array[Int] = Array(0,9) scala> (xs,ys).zipped.map{ _+_ } res1: scala.collection.immutable.IndexedSeq[Int] = Vector(0,10,12,14,16,18) scala> (zs,ys,xs).zipped.map{ _+_+_ } res2: Array[Int] = Array(0,9,15,18,21,24,27) scala>
在Tuple2和Tuple3中都有一个zip方法.
xs.zip(ys)与(xs,ys).zip相同
注意:(xs,ys).zip和(xs,ys)也有一些缺陷.zip压缩,确保xs不能是一个INFINITE流.转到Ticket #2634获取更多信息.
我在几天前在nabble.com上有a post,显示了我对如何修复这张机票的看法.