@@ -44,28 +44,24 @@ final class Tuple3Zipped[El1, It1 <: Iterable[El1], El2, It2 <: Iterable[El2], E
4444
4545 def map [B , To ](f : (El1 , El2 , El3 ) => B )(implicit bf : BuildFrom [It1 , B , To ]): To = {
4646 val b = bf.newBuilder(coll1)
47+ val elems1 = coll1.iterator
4748 val elems2 = coll2.iterator
4849 val elems3 = coll3.iterator
4950
50- for (el1 <- coll1) {
51- if (elems2.hasNext && elems3.hasNext)
52- b += f(el1, elems2.next(), elems3.next())
53- else
54- return b.result()
51+ while (elems1.hasNext && elems2.hasNext && elems3.hasNext) {
52+ b += f(elems1.next(), elems2.next(), elems3.next())
5553 }
5654 b.result()
5755 }
5856
5957 def flatMap [B , To ](f : (El1 , El2 , El3 ) => IterableOnce [B ])(implicit bf : BuildFrom [It1 , B , To ]): To = {
6058 val b = bf.newBuilder(coll1)
59+ val elems1 = coll1.iterator
6160 val elems2 = coll2.iterator
6261 val elems3 = coll3.iterator
6362
64- for (el1 <- coll1) {
65- if (elems2.hasNext && elems3.hasNext)
66- b ++= f(el1, elems2.next(), elems3.next())
67- else
68- return b.result()
63+ while (elems1.hasNext && elems2.hasNext && elems3.hasNext) {
64+ b ++= f(elems1.next(), elems2.next(), elems3.next())
6965 }
7066 b.result()
7167 }
@@ -77,37 +73,33 @@ final class Tuple3Zipped[El1, It1 <: Iterable[El1], El2, It2 <: Iterable[El2], E
7773 val b1 = bf1.newBuilder(coll1)
7874 val b2 = bf2.newBuilder(coll2)
7975 val b3 = bf3.newBuilder(coll3)
76+ val elems1 = coll1.iterator
8077 val elems2 = coll2.iterator
8178 val elems3 = coll3.iterator
82- def result = (b1.result(), b2.result(), b3.result())
83-
84- for (el1 <- coll1) {
85- if (elems2.hasNext && elems3.hasNext) {
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
93- }
79+
80+ while (elems1.hasNext && elems2.hasNext && elems3.hasNext) {
81+ val el1 = elems1.next()
82+ val el2 = elems2.next()
83+ val el3 = elems3.next()
84+
85+ if (f(el1, el2, el3)) {
86+ b1 += el1
87+ b2 += el2
88+ b3 += el3
9489 }
95- else return result
9690 }
97-
98- result
91+ (b1.result(), b2.result(), b3.result())
9992 }
10093
10194 def exists (p : (El1 , El2 , El3 ) => Boolean ): Boolean = {
95+ val elems1 = coll1.iterator
10296 val elems2 = coll2.iterator
10397 val elems3 = coll3.iterator
10498
105- for (el1 <- coll1) {
106- if (elems2.hasNext && elems3.hasNext) {
107- if (p(el1, elems2.next(), elems3.next()))
108- return true
99+ while (elems1.hasNext && elems2.hasNext && elems3.hasNext) {
100+ if (p(elems1.next(), elems2.next(), elems3.next())) {
101+ return true
109102 }
110- else return false
111103 }
112104 false
113105 }
@@ -118,14 +110,12 @@ final class Tuple3Zipped[El1, It1 <: Iterable[El1], El2, It2 <: Iterable[El2], E
118110 def iterator : Iterator [(El1 , El2 , El3 )] = coll1.iterator.zip(coll2.iterator).zip(coll3.iterator).map { case ((a, b), c) => (a, b, c)}
119111 override def isEmpty : Boolean = coll1.isEmpty || coll2.isEmpty || coll3.isEmpty
120112 def foreach [U ](f : (El1 , El2 , El3 ) => U ): Unit = {
113+ val elems1 = coll1.iterator
121114 val elems2 = coll2.iterator
122115 val elems3 = coll3.iterator
123116
124- for (el1 <- coll1) {
125- if (elems2.hasNext && elems3.hasNext)
126- f(el1, elems2.next(), elems3.next())
127- else
128- return
117+ while (elems1.hasNext && elems2.hasNext && elems3.hasNext) {
118+ f(elems1.next(), elems2.next(), elems3.next())
129119 }
130120 }
131121
0 commit comments