@@ -1215,51 +1215,25 @@ class Observable[+T](val asJava: rx.Observable[_ <: T])
1215
1215
// because we can just use ++ instead
1216
1216
1217
1217
/**
1218
- * Groups the items emitted by an Observable according to a specified criterion, and emits these
1219
- * grouped items as {@link GroupedObservable}s, one GroupedObservable per group.
1220
- * <p>
1221
- * <img width="640" src="https://github.com/Netflix/RxJava/wiki/images/rx-operators/groupBy.png">
1218
+ * Groups the items emitted by this Observable according to a specified discriminator function.
1222
1219
*
1223
- * @param keySelector
1220
+ * @param f
1224
1221
* a function that extracts the key from an item
1225
- * @param elementSelector
1226
- * a function to map a source item to an item in a {@link GroupedObservable}
1227
- * @param <K>
1228
- * the key type
1229
- * @param <R>
1230
- * the type of items emitted by the resulting {@link GroupedObservable}s
1231
- * @return an Observable that emits {@link GroupedObservable}s, each of which corresponds to a
1232
- * unique key value and emits items representing items from the source Observable that
1233
- * share that key value
1234
- */
1235
- /* TODO make a Scala GroupedObservable and groupBy
1236
- def groupBy[K,R](keySelector: T => K, elementSelector: T => R ): Observable[GroupedObservable[K,R]] = {
1237
- ???
1238
- }
1239
- */
1240
- // public <K, R> Observable<GroupedObservable<K, R>> groupBy(final Func1<? super T, ? extends K> keySelector, final Func1<? super T, ? extends R> elementSelector)
1241
-
1242
- /**
1243
- * Groups the items emitted by an Observable according to a specified criterion, and emits these
1244
- * grouped items as {@link GroupedObservable}s, one GroupedObservable per group.
1245
- * <p>
1246
- * <img width="640" src="https://github.com/Netflix/RxJava/wiki/images/rx-operators/groupBy.png">
1247
- *
1248
- * @param keySelector
1249
- * a function that extracts the key for each item
1250
1222
* @param <K>
1251
- * the key type
1252
- * @return an Observable that emits {@link GroupedObservable}s, each of which corresponds to a
1253
- * unique key value and emits items representing items from the source Observable that
1254
- * share that key value
1223
+ * the type of keys returned by the discriminator function.
1224
+ * @return an Observable that emits {@code (key, observable)} pairs, where {@code observable}
1225
+ * contains all items for which {@code f} returned {@code key}.
1255
1226
*/
1256
- /* TODO
1257
- def groupBy[K](keySelector: T => K ): Observable[GroupedObservable[K,T]] = {
1258
- ???
1227
+ def groupBy [K ](f : T => K ): Observable [(K , Observable [T ])] = {
1228
+ val o1 = asJava.groupBy[K ](f) : rx.Observable [_ <: rx.observables.GroupedObservable [K , _ <: T ]]
1229
+ val func = (o : rx.observables.GroupedObservable [K , _ <: T ]) => (o.getKey(), Observable [T ](o))
1230
+ Observable [(K , Observable [T ])](o1.map[(K , Observable [T ])](func))
1259
1231
}
1260
- */
1261
- // public <K> Observable<GroupedObservable<K, T>> groupBy(final Func1<? super T, ? extends K> keySelector)
1262
1232
1233
+ // There's no method corresponding to
1234
+ // public <K, R> Observable<GroupedObservable<K, R>> groupBy(final Func1<? super T, ? extends K> keySelector, final Func1<? super T, ? extends R> elementSelector)
1235
+ // because this can be obtained by combining groupBy and map (as in Scala)
1236
+
1263
1237
/**
1264
1238
* Given an Observable that emits Observables, creates a single Observable that
1265
1239
* emits the items emitted by the most recently published of those Observables.
0 commit comments