T
- Type held inside closed varpublic class MutableInt extends java.lang.Object implements To<MutableInt>, java.util.function.IntSupplier, java.util.function.IntConsumer, java.util.function.Supplier<java.lang.Integer>
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");
Constructor and Description |
---|
MutableInt() |
Modifier and Type | Method and Description |
---|---|
void |
accept(int value) |
static MutableInt |
fromExternal(java.util.function.IntSupplier s,
java.util.function.IntConsumer c)
Construct a MutableInt that gets and sets an external value using the provided Supplier and Consumer
e.g.
|
java.lang.Integer |
get() |
int |
getAsInt() |
MutableInt |
mapInput(java.util.function.IntUnaryOperator fn)
Use the supplied function to perform a lazy map operation when get is called
|
<T1> Mutable<T1> |
mapInputToObj(java.util.function.Function<T1,java.lang.Integer> fn)
Use the supplied function to perform a lazy map operation when get is called
|
MutableInt |
mapOutput(java.util.function.IntUnaryOperator fn)
Use the supplied function to perform a lazy map operation when get is called
|
<R> Mutable<R> |
mapOutputToObj(java.util.function.Function<java.lang.Integer,R> fn)
Use the supplied function to perform a lazy map operation when get is called
|
MutableInt |
mutate(java.util.function.IntFunction<java.lang.Integer> varFn) |
static MutableInt |
of(int var)
Create a Mutable variable, which can be mutated inside a Closure
e.g.
|
MutableInt |
set(int var) |
java.util.stream.IntStream |
toIntStream() |
java.util.OptionalInt |
toOptionalInt() |
public static MutableInt of(int var)
MutableInt num = MutableInt.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
var
- Initial value of Mutablepublic static MutableInt fromExternal(java.util.function.IntSupplier s, java.util.function.IntConsumer c)
MutableInt mutable = MutableInt.fromExternal(()->!this.value,val->!this.value);
s
- Supplier of an external valuec
- Consumer that sets an external valuepublic <R> Mutable<R> mapOutputToObj(java.util.function.Function<java.lang.Integer,R> fn)
MutableInt mutable = MutableInt.fromExternal(()->!this.value,val->!this.value);
Mutable<Int> withOverride = mutable.mapOutputToObj(b->{
if(override)
return 10.0;
return b;
});
fn
- Map function to be applied to the result when get is calledpublic <T1> Mutable<T1> mapInputToObj(java.util.function.Function<T1,java.lang.Integer> fn)
MutableInt mutable = MutableInt.fromExternal(()->!this.value,val->!this.value);
Mutable<Int> withOverride = mutable.mapInputToObj(b->{
if(override)
return 10;
return b;
});
fn
- Map function to be applied to the input when set is calledpublic MutableInt mapOutput(java.util.function.IntUnaryOperator fn)
MutableInt mutable = MutableInt.fromExternal(()->!this.value,val->!this.value);
MutableInt withOverride = mutable.mapOutput(b->{
if(override)
return 10;
return b;
});
fn
- Map function to be applied to the result when get is calledpublic MutableInt mapInput(java.util.function.IntUnaryOperator fn)
MutableInt mutable = MutableInt.fromExternal(()->!this.value,val->!this.value);
MutableInt withOverride = mutable.mapInput(b->{
if(override)
return 10;
return b;
});
fn
- Map function to be applied to the input when set is calledpublic int getAsInt()
getAsInt
in interface java.util.function.IntSupplier
public MutableInt set(int var)
var
- New valuepublic MutableInt mutate(java.util.function.IntFunction<java.lang.Integer> varFn)
varFn
- New valuepublic java.util.OptionalInt toOptionalInt()
public java.util.stream.IntStream toIntStream()
public java.lang.Integer get()
get
in interface java.util.function.Supplier<java.lang.Integer>
public void accept(int value)
accept
in interface java.util.function.IntConsumer