GfxLab-2022-2023/src/xyz/marsavic/gfxlab/elements/ElementF1.java
2022-11-15 02:21:15 +01:00

43 lines
694 B
Java

package xyz.marsavic.gfxlab.elements;
import xyz.marsavic.functions.interfaces.F1;
public abstract class ElementF1<R, P0> extends ElementF<R> {
protected final F1<R, P0> f;
protected final Input<? extends P0> in0;
public ElementF1(F1<R, P0> f, HasOutput<? extends P0> p0) {
this.f = f;
in0 = new Input<>(p0.out());
}
public static class Lazy<R, P0> extends ElementF1<R, P0> {
public Lazy(F1<R, P0> f, HasOutput<? extends P0> p0) {
super(f, p0);
}
private R object;
@Override
protected void buildItUp() {
object = null;
}
public R object() {
if (object == null) {
object = f.at(in0.get());
}
return object;
}
}
}