Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pakoito/rxtuples
Simple tuples to use with RxJava [STABLE]
https://github.com/pakoito/rxtuples
android functional-programming java
Last synced: 7 days ago
JSON representation
Simple tuples to use with RxJava [STABLE]
- Host: GitHub
- URL: https://github.com/pakoito/rxtuples
- Owner: pakoito
- License: other
- Created: 2015-12-07T22:04:18.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2017-03-22T00:07:44.000Z (over 7 years ago)
- Last Synced: 2024-11-01T01:24:25.057Z (14 days ago)
- Topics: android, functional-programming, java
- Language: Java
- Homepage:
- Size: 97.7 KB
- Stars: 112
- Watchers: 7
- Forks: 6
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# RxTuples
RxTuples is a library to smooth RxJava usage by adding simple Tuple creation functions.
For the RxJava 2.X version, please go to [RxTuples2](https://github.com/pakoito/RxTuples2).
## Rationale
Quite often when using RxJava you find the need to forward a value alongside the result of an operation, combine several values, or simply adding an external value to the current internal state of the chain. For this you either create ad-hoc types that may only be used locally, which is inefficient.
Other languages have the concept of a Tuple built into them, which is an in-place list of values. Lots of Java libraries implement their own concept of Tuple, being a Pair, a Point, or VecX types. This library uses [javatuples](http://www.javatuples.org/) in an attempt to unify them[.](https://imgs.xkcd.com/comics/standards.png) Javatuples are all "typesafe, immutable, iterable, serializable, comparable" classes ranging from 1 to 10 elements.
## Usage
RxTuples come as lazily evaluated FuncN and its main use case is alongside the combineLatest, withLatestFrom, zip, and zipWith operators.
Zip a list element into a pair with their position:
Observable.zip(Observable.from(myStringList), Observable.range(0, myStringList.size()),
RxTuples.toPair());Merge the value of several hot observables:
Observable.combineLatest(networkSubject(), bluetoothSubject(), compassSubject(),
RxTuples.toTriplet());Get the previous element from a sequence alongside the current one:
Observable.zip(compassSubject(), compassSubject().skip(1),
RxTuples.toPair());or more complicated cases
Observable.just(Quintet.with(1, 2, 3, 4, 5))
.zipWith(
Observable.just(Triplet.with(6, 7, 8)),
RxTuples. toOctetFromQuintet());## Distribution
Add as a dependency to your `build.gradle`
repositories {
...
maven { url "https://jitpack.io" }
...
}
dependencies {
...
compile 'com.github.pakoito:RxTuples:1.0.+'
...
}or to your `pom.xml`
jitpack.io
https://jitpack.io
com.github.pakoito
RxTuples
1.0.0
## License
Copyright (c) pakoito 2015
The Apache Software License, Version 2.0
See LICENSE.md