输出Iterable.sliding作为元组

zig*_*tar 10 collections scala

在集合上滑动的方法返回给定大小的滑动窗口,其形式为X[Iterable[A]]X是集合的类型,A是元素类型.我经常需要两三个元素,我更喜欢将它们命名.一个丑陋的解决方法sliding(2)是:

points.sliding(2).foreach{ twoPoints =>
      val (p1,p2) = (twoPoints.head,twoPoints.last)
      //do something
}
Run Code Online (Sandbox Code Playgroud)

这很糟糕,只适用于两个元素.另请注意

(a,b) = (twoPoints(0),twoPoints(1))
Run Code Online (Sandbox Code Playgroud)

不起作用.

Dan*_*ral 17

上周我在这个答案中做了很多.

points.sliding(2).foreach { case X(p1, p2) => ... }
Run Code Online (Sandbox Code Playgroud)

如果pointsArray,则替换XArray.如果是a List,则替换XList,依此类推.

请注意,您正在进行模式匹配,因此您需要{}代替()参数.