Для проекта в Java я создаю собственный логический класс (с именем Result), который может иметь три значения: True, False или Undefined.Я определил две функции: «или» и «и» с правилами:
public static Result or(Result r1, Result r2) {
if(r1.isTrue() || r2.isTrue()){
return V(); //new Result with value "True";
} else if(r1.isUndefined() || r2.isUndefined()) {
return U(); //new Result with value "Undefined";
} else {
return F(); //new Result with value "False";
}
}
public static Result and(Result r1, Result r2) {
if(r1.isFalse() || r2.isFalse()){
return F(); //new Result with value "False";
} else if(r1.isUndefined() || r2.isUndefined()) {
return U();//new Result with value "Undefined";
} else {
return V(); //new Result with value "True";
}
}
Это работает, но во многих случаях это неэффективно, потому что мне нужно вычислить значение двух Результатов до вычисления возвратаиз «или» или «и»:
, если я сделаю
if(f1() || f2()){
}
и результат f1 () равен True, то f2 () никогда не будет выполнен, чтобы сэкономить время вычислений.
Есть ли решение для такого же поведения с моим пользовательским классом?