@@ -48,28 +48,24 @@ final class Tuple3Zipped[El1, It1 <: Iterable[El1], El2, It2 <: Iterable[El2], E
4848
4949 def map [B , To ](f : (El1 , El2 , El3 ) => B )(implicit bf : BuildFrom [It1 , B , To ]): To = {
5050 val b = bf.newBuilder(coll1)
51+ val elems1 = coll1.iterator
5152 val elems2 = coll2.iterator
5253 val elems3 = coll3.iterator
5354
54- for (el1 <- coll1) {
55- if (elems2.hasNext && elems3.hasNext)
56- b += f(el1, elems2.next(), elems3.next())
57- else
58- return b.result()
55+ while (elems1.hasNext && elems2.hasNext && elems3.hasNext) {
56+ b += f(elems1.next(), elems2.next(), elems3.next())
5957 }
6058 b.result()
6159 }
6260
6361 def flatMap [B , To ](f : (El1 , El2 , El3 ) => IterableOnce [B ])(implicit bf : BuildFrom [It1 , B , To ]): To = {
6462 val b = bf.newBuilder(coll1)
63+ val elems1 = coll1.iterator
6564 val elems2 = coll2.iterator
6665 val elems3 = coll3.iterator
6766
68- for (el1 <- coll1) {
69- if (elems2.hasNext && elems3.hasNext)
70- b ++= f(el1, elems2.next(), elems3.next())
71- else
72- return b.result()
67+ while (elems1.hasNext && elems2.hasNext && elems3.hasNext) {
68+ b ++= f(elems1.next(), elems2.next(), elems3.next())
7369 }
7470 b.result()
7571 }
@@ -81,37 +77,33 @@ final class Tuple3Zipped[El1, It1 <: Iterable[El1], El2, It2 <: Iterable[El2], E
8177 val b1 = bf1.newBuilder(coll1)
8278 val b2 = bf2.newBuilder(coll2)
8379 val b3 = bf3.newBuilder(coll3)
80+ val elems1 = coll1.iterator
8481 val elems2 = coll2.iterator
8582 val elems3 = coll3.iterator
86- def result = (b1.result(), b2.result(), b3.result())
87-
88- for (el1 <- coll1) {
89- if (elems2.hasNext && elems3.hasNext) {
90- val el2 = elems2.next()
91- val el3 = elems3.next()
92-
93- if (f(el1, el2, el3)) {
94- b1 += el1
95- b2 += el2
96- b3 += el3
97- }
83+
84+ while (elems1.hasNext && elems2.hasNext && elems3.hasNext) {
85+ val el1 = elems1.next()
86+ val el2 = elems2.next()
87+ val el3 = elems3.next()
88+
89+ if (f(el1, el2, el3)) {
90+ b1 += el1
91+ b2 += el2
92+ b3 += el3
9893 }
99- else return result
10094 }
101-
102- result
95+ (b1.result(), b2.result(), b3.result())
10396 }
10497
10598 def exists (p : (El1 , El2 , El3 ) => Boolean ): Boolean = {
99+ val elems1 = coll1.iterator
106100 val elems2 = coll2.iterator
107101 val elems3 = coll3.iterator
108102
109- for (el1 <- coll1) {
110- if (elems2.hasNext && elems3.hasNext) {
111- if (p(el1, elems2.next(), elems3.next()))
112- return true
103+ while (elems1.hasNext && elems2.hasNext && elems3.hasNext) {
104+ if (p(elems1.next(), elems2.next(), elems3.next())) {
105+ return true
113106 }
114- else return false
115107 }
116108 false
117109 }
@@ -122,14 +114,12 @@ final class Tuple3Zipped[El1, It1 <: Iterable[El1], El2, It2 <: Iterable[El2], E
122114 def iterator : Iterator [(El1 , El2 , El3 )] = coll1.iterator.zip(coll2.iterator).zip(coll3.iterator).map { case ((a, b), c) => (a, b, c)}
123115 override def isEmpty : Boolean = coll1.isEmpty || coll2.isEmpty || coll3.isEmpty
124116 def foreach [U ](f : (El1 , El2 , El3 ) => U ): Unit = {
117+ val elems1 = coll1.iterator
125118 val elems2 = coll2.iterator
126119 val elems3 = coll3.iterator
127120
128- for (el1 <- coll1) {
129- if (elems2.hasNext && elems3.hasNext)
130- f(el1, elems2.next(), elems3.next())
131- else
132- return
121+ while (elems1.hasNext && elems2.hasNext && elems3.hasNext) {
122+ f(elems1.next(), elems2.next(), elems3.next())
133123 }
134124 }
135125
0 commit comments