From a7352711e1d6c36b16235c042e139946ad6fb35c Mon Sep 17 00:00:00 2001 From: Ben Culkin Date: Fri, 26 Feb 2021 16:15:54 -0500 Subject: Update --- src/main/java/bjc/data/Option.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/main/java/bjc/data/Option.java') diff --git a/src/main/java/bjc/data/Option.java b/src/main/java/bjc/data/Option.java index 6c76d59..6ca8b13 100644 --- a/src/main/java/bjc/data/Option.java +++ b/src/main/java/bjc/data/Option.java @@ -13,7 +13,15 @@ import java.util.function.UnaryOperator; */ public class Option implements Holder { private ContainedType held; - + private boolean isHolding; + + /** + * Create a new empty optional. + */ + public Option() { + isHolding = false; + } + /** * Create a new optional, using the given initial value. * @@ -22,12 +30,13 @@ public class Option implements Holder { */ public Option(final ContainedType seed) { held = seed; + isHolding = true; } @Override public Holder bind(final Function> binder) { - if (held == null) return new Option<>(null); + if (isHolding) return new Option<>(); return binder.apply(held); } @@ -41,7 +50,7 @@ public class Option implements Holder { @Override public Holder map(final Function mapper) { - if (held == null) return new Option<>(null); + if (isHolding) return new Option<>(); return new Option<>(mapper.apply(held)); } @@ -49,7 +58,7 @@ public class Option implements Holder { @Override public Holder transform(final UnaryOperator transformer) { - if (held != null) held = transformer.apply(held); + if (isHolding) held = transformer.apply(held); return this; } @@ -57,7 +66,7 @@ public class Option implements Holder { @Override public UnwrappedType unwrap(final Function unwrapper) { - if (held == null) return null; + if (isHolding) return null; return unwrapper.apply(held); } -- cgit v1.2.3