T
- Type held inside closed varpublic class Mutable<T> extends java.lang.Object implements java.util.function.Supplier<T>, java.util.function.Consumer<T>, Matchable.ValueAndOptionalMatcher<T>
String var = "hello";
Runnable r = () -> var ="world";
Won't compile because var is treated as if it is final.
This can be 'worked around' by using a wrapping object or array.
e.g.
Mutable<String> var = Mutable.of("hello");
Runnable r = () -> var.set("world");
Value.ValueImpl<T>
Convertable.SupplierToConvertable<T>
Constructor and Description |
---|
Mutable() |
Modifier and Type | Method and Description |
---|---|
void |
accept(T t) |
static <T> Mutable<T> |
fromExternal(java.util.function.Supplier<T> s,
java.util.function.Consumer<T> c)
Construct a Mutable that gets and sets an external value using the provided Supplier and Consumer
e.g.
|
T |
get() |
<T1> Mutable<T1> |
mapInput(java.util.function.Function<T1,T> fn) |
<R> Mutable<R> |
mapOutput(java.util.function.Function<T,R> fn) |
Mutable<T> |
mutate(java.util.function.Function<T,T> varFn) |
static <T> Mutable<T> |
of(T var)
Create a Mutable variable, which can be mutated inside a Closure
e.g.
|
Mutable<T> |
set(T var) |
Mutable<T> |
toMutable() |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
iterator, toOptional, visit
matches
collect, fold, fold, generate, iterate, mapReduce, mkString, newSubscriber, stream, subscribe, test, toDequeX, toEvalAlways, toEvalLater, toEvalNow, toFeatureToggle, toFutureStream, toFutureStream, toIor, toLazyImmutable, toList, toListX, toMaybe, toPBagX, toPOrderedSetX, toPQueueX, toPSetX, toPStackX, toPVectorX, toQueueX, toSetX, toSimpleReact, toSimpleReact, toSortedSetX, toTry, toTry, toTry, toXor, toXor, unapply
endsWith, 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, xMatch
collect, fromSupplier, isPresent, orElse, orElseGet, orElseThrow, toAtomicReference, toCompletableFuture, toCompletableFutureAsync, toCompletableFutureAsync, toFutureW, toFutureWAsync, toFutureWAsync, toOptionalAtomicReference, toStream
public static <T> Mutable<T> of(T var)
Mutable<Integer> num = Mutable.of(20);
Stream.of(1,2,3,4).map(i->i*10).peek(i-> num.mutate(n->n+i)).foreach(System.out::println);
System.out.println(num.get());
//prints 120
public static <T> Mutable<T> fromExternal(java.util.function.Supplier<T> s, java.util.function.Consumer<T> c)
Mutable<Integer> mutable = Mutable.from(()->this.value*2,val->this.value=val);
s
- Supplier of an external valuec
- Consumer that sets an external valuepublic T get()
get
in interface Convertable<T>
get
in interface java.util.function.Supplier<T>
public Mutable<T> set(T var)
var
- New valuepublic Mutable<T> mutate(java.util.function.Function<T,T> varFn)
varFn
- New value