@Override public Byte get() { return getAsByte(); }
/** * @param varFn New value * @return this object with mutated value */ public MutableByte mutate(final ByteFunction varFn) { return set(varFn.apply(getAsByte())); }
@Test public void testMutate(){ MutableByte num = MutableByte.of(twenty); Stream.of(1,2,3,4).map(i->i*10).peek(i-> num.mutate(n->new Byte((byte)(n+i)))).forEach(System.out::println); assertThat(num.getAsByte(),is((byte)120)); } @Test
@Test public void inClosure(){ MutableByte myInt = new MutableByte(zero); Function<Integer,Function<Integer,MutableByte>> fn = ((Integer i)-> (Integer j)-> myInt.set(new Byte((byte)(i*j)))); fn.apply(10).apply(20); assertThat(myInt.getAsByte(), is((byte)200)); } @Test
@Test public void inClosure2(){ MutableByte myInt = new MutableByte(zero); BiFunction<Byte,Byte,MutableByte> fn = (i,j)-> myInt.set(new Byte((byte)(i*j))); fn.apply(ten,twenty); assertThat(myInt.getAsByte(), is((byte)200)); }
@Test public void testClosedVar() { assertThat(new MutableByte(ten).getAsByte(),equalTo(ten)); } @Test
@Test public void testSet() { assertThat(new MutableByte().set(twenty).getAsByte(),is(twenty)); }
@Override public Byte get() { return getAsByte(); }
/** * @param varFn New value * @return this object with mutated value */ public MutableByte mutate(final ByteFunction varFn) { return set(varFn.apply(getAsByte())); }