public static class Ior.Primary<ST,PT> extends java.lang.Object implements Ior<ST,PT>
Ior.Both<ST,PT>, Ior.Primary<ST,PT>, Ior.Secondary<ST,PT>ApplicativeFunctor.Applicatives, ApplicativeFunctor.ApplyFunctions<T>Value.ValueImpl<T>Convertable.SupplierToConvertable<T>| Constructor and Description |
|---|
Primary() |
| Modifier and Type | Method and Description |
|---|---|
<R1,R2> Ior<R1,R2> |
bimap(java.util.function.Function<? super ST,? extends R1> fn1,
java.util.function.Function<? super PT,? extends R2> fn2)
Transform this BiFunctor, changing two value types at once.
|
Ior<ST,PT> |
bipeek(java.util.function.Consumer<? super ST> stAction,
java.util.function.Consumer<? super PT> ptAction)
Peek at two data types simulatanously (typically to perform a side-effect with each data point)
|
java.util.Optional<org.jooq.lambda.tuple.Tuple2<ST,PT>> |
both() |
<T2,R> Ior<ST,R> |
combine(Value<? extends T2> app,
java.util.function.BiFunction<? super PT,? super T2,? extends R> fn)
Lazily combine this ApplicativeFunctor with the supplied value via the supplied BiFunction
Example
|
Ior<ST,PT> |
filter(java.util.function.Predicate<? super PT> test)
Keep only elements for which the supplied predicates hold
e.g.
|
<RT1> Ior<ST,RT1> |
flatMap(java.util.function.Function<? super PT,? extends MonadicValue<? extends RT1>> mapper)
A flattening transformation operation (@see
Optional.flatMap(Function) |
PT |
get() |
boolean |
isBoth() |
boolean |
isPrimary() |
boolean |
isSecondary() |
<R> Ior<ST,R> |
map(java.util.function.Function<? super PT,? extends R> fn)
Transform this functor using the supplied transformation function
|
<R> Eval<R> |
matches(java.util.function.Function<Matchable.CheckValue1<ST,R>,Matchable.CheckValue1<ST,R>> secondary,
java.util.function.Function<Matchable.CheckValue1<PT,R>,Matchable.CheckValue1<PT,R>> primary,
java.util.function.Function<Matchable.CheckValue2<ST,PT,R>,Matchable.CheckValue2<ST,PT,R>> both,
java.util.function.Supplier<? extends R> otherwise)
Pattern match on the value/s inside this Ior.
|
java.lang.String |
mkString()
Returns the class name and the name of the subclass, if there is any value, the value is showed between square brackets.
|
Ior<ST,PT> |
peek(java.util.function.Consumer<? super PT> action)
Peek at the current value of this Functor, without transforming it
|
<LT1> Ior<LT1,PT> |
secondaryFlatMap(java.util.function.Function<? super ST,? extends Ior<LT1,PT>> mapper)
Perform a flatMap operation on the Secondary type
|
ST |
secondaryGet() |
<R> Ior<R,PT> |
secondaryMap(java.util.function.Function<? super ST,? extends R> fn)
Always map the Secondary type of this Ior if it is present using the provided transformation function
|
Ior<ST,PT> |
secondaryPeek(java.util.function.Consumer<? super ST> action)
Peek at the Secondary type value if present
|
java.util.Optional<ST> |
secondaryToOptional() |
Ior<ST,PT> |
secondaryToPrimayFlatMap(java.util.function.Function<? super ST,? extends Ior<ST,PT>> fn)
A flatMap operation that keeps the Secondary and Primary types the same
|
Ior<ST,PT> |
secondaryToPrimayMap(java.util.function.Function<? super ST,? extends PT> fn)
If this Ior contains the Secondary type only, map it's value so that it contains the Primary type only
If this Ior contains both types, this method has no effect in the default implementations
|
ReactiveSeq<ST> |
secondaryToStream() |
Value<ST> |
secondaryValue() |
Ior<PT,ST> |
swap() |
java.lang.String |
toString() |
Xor<ST,PT> |
toXor() |
Xor<ST,PT> |
toXorDropPrimary() |
<R> R |
visit(java.util.function.Function<? super ST,? extends R> secondary,
java.util.function.Function<? super PT,? extends R> primary,
java.util.function.BiFunction<? super ST,? super PT,? extends R> both)
Visitor pattern for this Ior.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaccumulatePrimary, accumulatePrimary, accumulatePrimary, accumulateSecondary, accumulateSecondary, accumulateSecondary, anyM, bicast, bitrampoline, both, both, bothValue, cast, coflatMap, combine, combineEager, filterNot, flatMapIterable, flatMapPublisher, forEach2, forEach2, forEach3, forEach3, forEach4, forEach4, fromIterable, fromPublisher, isPresent, nest, notNull, ofType, patternMatch, primary, secondary, sequencePrimary, sequenceSecondary, toIor, toXor, trampoline, unit, zip, zip, zip, zip, zip, zip, zipapplyFunctionscollect, fold, fold, generate, iterate, iterator, mapReduce, newSubscriber, of, stream, subscribe, test, toDequeX, toEvalAlways, toEvalLater, toEvalNow, toFeatureToggle, toFutureStream, toFutureStream, toLazyImmutable, toList, toListX, toMaybe, toMutable, toPBagX, toPOrderedSetX, toPQueueX, toPSetX, toPStackX, toPVectorX, toQueueX, toSetX, toSimpleReact, toSimpleReact, toSortedSetX, toTry, toTry, toTry, unapplyendsWith, endsWithIterable, findAny, findFirst, firstValue, foldable, foldRight, foldRight, foldRight, foldRightMapToType, get, groupBy, join, join, join, mapReduce, print, print, printErr, printOut, reduce, reduce, reduce, reduce, reduce, reduce, reduce, schedule, scheduleFixedDelay, scheduleFixedRate, single, single, singleOptional, startsWith, startsWithIterable, toConcurrentLazyCollection, toConcurrentLazyStreamable, toLazyCollection, validate, xMatchcollect, fromSupplier, orElse, orElseGet, orElseThrow, toAtomicReference, toCompletableFuture, toCompletableFutureAsync, toCompletableFutureAsync, toFutureW, toFutureWAsync, toFutureWAsync, toOptional, toOptionalAtomicReference, toStream, visitpublic Xor<ST,PT> toXorDropPrimary()
toXorDropPrimary in interface Ior<ST,PT>public Ior<ST,PT> secondaryToPrimayMap(java.util.function.Function<? super ST,? extends PT> fn)
IorsecondaryToPrimayMap in interface Ior<ST,PT>fn - Function to map secondary type to primarypublic <R> Ior<R,PT> secondaryMap(java.util.function.Function<? super ST,? extends R> fn)
IorsecondaryMap in interface Ior<ST,PT>fn - Transformation function for Secondary typespublic <R> Ior<ST,R> map(java.util.function.Function<? super PT,? extends R> fn)
Functor
of(1,2,3).map(i->i*2)
//[2,4,6]
public Ior<ST,PT> secondaryPeek(java.util.function.Consumer<? super ST> action)
IorsecondaryPeek in interface Ior<ST,PT>action - Consumer to peek at the Secondary type valuepublic <R> R visit(java.util.function.Function<? super ST,? extends R> secondary, java.util.function.Function<? super PT,? extends R> primary, java.util.function.BiFunction<? super ST,? super PT,? extends R> both)
Ior
Ior.primary(10)
.visit(secondary->"no", primary->"yes",(sec,pri)->"oops!")
//Ior["yes"]
Ior.secondary(90)
.visit(secondary->"no", primary->"yes",(sec,pri)->"oops!")
//Ior["no"]
Ior.both(10, "eek")
.visit(secondary->"no", primary->"yes",(sec,pri)->"oops!")
//Ior["oops!"]
public Ior<ST,PT> peek(java.util.function.Consumer<? super PT> action)
Functor
of(1,2,3).map(System.out::println)
1
2
3
public Ior<ST,PT> filter(java.util.function.Predicate<? super PT> test)
Filterable
of(1,2,3).filter(i->i>2);
//[3]
filter in interface Ior<ST,PT>filter in interface Filterable<PT>filter in interface MonadicValue<PT>test - to filter elements by, retaining matchespublic <R1,R2> Ior<R1,R2> bimap(java.util.function.Function<? super ST,? extends R1> fn1, java.util.function.Function<? super PT,? extends R2> fn2)
BiFunctor
MapX<String,Integer> map = MapXs.of("hello",2);
MapX<String,Integer> transformedMap = map.bimap(s->s+" world",i->i*4);
//["hello world",8]
public PT get()
public ST secondaryGet()
secondaryGet in interface Ior<ST,PT>public java.util.Optional<ST> secondaryToOptional()
secondaryToOptional in interface Ior<ST,PT>public ReactiveSeq<ST> secondaryToStream()
secondaryToStream in interface Ior<ST,PT>public <RT1> Ior<ST,RT1> flatMap(java.util.function.Function<? super PT,? extends MonadicValue<? extends RT1>> mapper)
MonadicValueOptional.flatMap(Function)
Eval.now(1).map(i->i+2).flatMap(i->Eval.later(()->i*3);
//Eval[9]
public <LT1> Ior<LT1,PT> secondaryFlatMap(java.util.function.Function<? super ST,? extends Ior<LT1,PT>> mapper)
IorsecondaryFlatMap in interface Ior<ST,PT>mapper - Flattening transformation functionpublic Ior<ST,PT> secondaryToPrimayFlatMap(java.util.function.Function<? super ST,? extends Ior<ST,PT>> fn)
IorsecondaryToPrimayFlatMap in interface Ior<ST,PT>fn - Transformation functionpublic Ior<ST,PT> bipeek(java.util.function.Consumer<? super ST> stAction, java.util.function.Consumer<? super PT> ptAction)
BiFunctor
MapX<String,Integer> map = MapXs.of("hello",2);
map.bipeek(s->System.out.pritnln("key = " + s),System.out::println);
public boolean isPrimary()
public boolean isSecondary()
isSecondary in interface Ior<ST,PT>public boolean isBoth()
public Value<ST> secondaryValue()
secondaryValue in interface Ior<ST,PT>public java.lang.String toString()
toString in class java.lang.Objectpublic java.lang.String mkString()
Valuepublic <T2,R> Ior<ST,R> combine(Value<? extends T2> app, java.util.function.BiFunction<? super PT,? super T2,? extends R> fn)
Combiner
Maybe<Integer> some = Maybe.just(10);
just.combine(Eval.now(20), this::add);
//Some[30]
Maybe<Integer> none = Maybe.none();
none.combine(Eval.now(20), this::add);
//None
public <R> Eval<R> matches(java.util.function.Function<Matchable.CheckValue1<ST,R>,Matchable.CheckValue1<ST,R>> secondary, java.util.function.Function<Matchable.CheckValue1<PT,R>,Matchable.CheckValue1<PT,R>> primary, java.util.function.Function<Matchable.CheckValue2<ST,PT,R>,Matchable.CheckValue2<ST,PT,R>> both, java.util.function.Supplier<? extends R> otherwise)
Ior
import static com.aol.cyclops.control.Matchable.otherwise;
import static com.aol.cyclops.control.Matchable.then;
import static com.aol.cyclops.control.Matchable.when;
import static com.aol.cyclops.util.function.Predicates.instanceOf;
Ior.primary(10)
.matches(c->c.is(when("10"),then("hello")),
c->c.is(when(instanceOf(Integer.class)), then("error")),
c->c.is(when("10",10), then("boo!")),
otherwise("miss"));
//Eval["error"]
matches in interface Ior<ST,PT>secondary - Pattern matching function executed if this Ior has the secondary type onlyprimary - Pattern matching function executed if this Ior has the primary type onlyboth - Pattern matching function executed if this Ior has both typesotherwise - Supplier used to provide a value if the selecting pattern matching function fails to find a match