Skip to content

Commit 54fc958

Browse files
BlockingObservable: add foreach and make it extend AnyVal
1 parent f0feb97 commit 54fc958

File tree

2 files changed

+24
-11
lines changed

2 files changed

+24
-11
lines changed

language-adaptors/rxjava-scala/src/main/scala/rx/lang/scala/examples/RxScalaDemo.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,16 @@ class RxScalaDemo extends JUnitSuite {
109109
assertEquals(10, Observable(1, 2, 3, 4).reduce(_ + _).toBlockingObservable.single)
110110
}
111111

112+
@Test def testForeach() {
113+
val numbers = Observable.interval(200 millis).take(3)
114+
115+
// foreach is not available on normal Observables:
116+
// for (n <- numbers) println(n+10)
117+
118+
// but on BlockingObservable, it is:
119+
for (n <- numbers.toBlockingObservable) println(n+10)
120+
}
121+
112122
def output(s: String): Unit = println(s)
113123

114124
// blocks until obs has completed
Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,29 @@
11
package rx.lang.scala.observables
22

33
import scala.collection.JavaConverters._
4+
import rx.lang.scala.internal.ImplicitFunctionConversions._
45

56
class BlockingObservable[+T](val asJava: rx.observables.BlockingObservable[_ <: T])
6-
// extends AnyVal
7+
extends AnyVal
78
{
8-
9-
// forEach(Action1<? super T>)
10-
// getIterator()
11-
9+
10+
def foreach(f: T => Unit): Unit = {
11+
asJava.forEach(f)
12+
}
13+
1214
def last: T = {
13-
asJava.last()
15+
asJava.last() : T // useless ascription because of compiler bug
1416
}
15-
17+
18+
// getIterator()
1619
// last(Func1<? super T, Boolean>)
1720
// lastOrDefault(T)
1821
// lastOrDefault(T, Func1<? super T, Boolean>)
1922
// mostRecent(T)
2023
// next()
21-
24+
2225
def single: T = {
23-
asJava.single()
26+
asJava.single() : T // useless ascription because of compiler bug
2427
}
2528

2629
// single(Func1<? super T, Boolean>)
@@ -34,11 +37,11 @@ class BlockingObservable[+T](val asJava: rx.observables.BlockingObservable[_ <:
3437
// toFuture()
3538

3639
def toIterable: Iterable[T] = {
37-
asJava.toIterable().asScala
40+
asJava.toIterable().asScala : Iterable[T] // useless ascription because of compiler bug
3841
}
3942

4043
def toList: List[T] = {
41-
asJava.toIterable().asScala.toList
44+
asJava.toIterable().asScala.toList : List[T] // useless ascription because of compiler bug
4245
}
4346

4447
}

0 commit comments

Comments
 (0)