summaryrefslogtreecommitdiff
path: root/BJC-Utils2/src/main/java/bjc/utils/data/LazyPair.java
diff options
context:
space:
mode:
Diffstat (limited to 'BJC-Utils2/src/main/java/bjc/utils/data/LazyPair.java')
-rw-r--r--BJC-Utils2/src/main/java/bjc/utils/data/LazyPair.java32
1 files changed, 16 insertions, 16 deletions
diff --git a/BJC-Utils2/src/main/java/bjc/utils/data/LazyPair.java b/BJC-Utils2/src/main/java/bjc/utils/data/LazyPair.java
index d69a7bb..b02d9cb 100644
--- a/BJC-Utils2/src/main/java/bjc/utils/data/LazyPair.java
+++ b/BJC-Utils2/src/main/java/bjc/utils/data/LazyPair.java
@@ -59,6 +59,12 @@ public class LazyPair<LeftType, RightType>
}
@Override
+ public <BoundLeft, BoundRight> IPair<BoundLeft, BoundRight> bind(
+ BiFunction<LeftType, RightType, IPair<BoundLeft, BoundRight>> binder) {
+ return new BoundLazyPair<>(leftSupplier, rightSupplier, binder);
+ }
+
+ @Override
public <BoundLeft> IPair<BoundLeft, RightType> bindLeft(
Function<LeftType, IPair<BoundLeft, RightType>> leftBinder) {
Supplier<LeftType> leftSupp = () -> {
@@ -87,49 +93,43 @@ public class LazyPair<LeftType, RightType>
}
@Override
- public <BoundLeft, BoundRight> IPair<BoundLeft, BoundRight> bind(
- BiFunction<LeftType, RightType, IPair<BoundLeft, BoundRight>> binder) {
- return new BoundLazyPair<>(leftSupplier, rightSupplier, binder);
- }
-
- @Override
- public <MergedType> MergedType merge(
- BiFunction<LeftType, RightType, MergedType> merger) {
+ public LeftType getLeft() {
if (!leftMaterialized) {
leftValue = leftSupplier.get();
leftMaterialized = true;
}
+ return leftValue;
+ }
+
+ @Override
+ public RightType getRight() {
if (!rightMaterialized) {
rightValue = rightSupplier.get();
rightMaterialized = true;
}
- return merger.apply(leftValue, rightValue);
+ return rightValue;
}
@Override
- public LeftType getLeft() {
+ public <MergedType> MergedType merge(
+ BiFunction<LeftType, RightType, MergedType> merger) {
if (!leftMaterialized) {
leftValue = leftSupplier.get();
leftMaterialized = true;
}
- return leftValue;
- }
-
- @Override
- public RightType getRight() {
if (!rightMaterialized) {
rightValue = rightSupplier.get();
rightMaterialized = true;
}
- return rightValue;
+ return merger.apply(leftValue, rightValue);
}
@Override