我需要将当前布尔值与以前存在的值进行比较。类似于以下示例:
Sub Macro1()
'
' Macro1 Macro
'
Columns("A:A").ColumnWidth = 20.14
End Sub
我怎么去呢?
答案 0 :(得分:1)
您需要创建另一个变量,该变量将在分配新值之前存储原始值。
如果出于某种原因要重用它,则可以创建一个名为“ BooleanWithPrevious”的类,在该类内部,您还将拥有两个布尔值,即实际值和前一个布尔值。使用setter可以更新两个值,然后使用getter获取先前和当前的值。
TL; DR
您需要一个辅助变量来实现所需的功能。基元只有一个实际值,什么都不记得。
答案 1 :(得分:0)
您将需要创建自己的数据结构。例如:
public class StateAwareBoolean {
private boolean oldState = false;
private boolean currentState;
public StateAwareBoolean(boolean value) {
currentState = value;
}
public void set(boolean newState) {
oldState = currentState;
currentState = newState;
}
public boolean oldState() {
return oldState;
}
public boolean currentState() {
return currentState;
}
}
用法将是这样的:
private StateAwareBoolean f = new StateAwareBoolean(false);
f.set(true);
if(f.oldState() == f.currentState()){}
答案 2 :(得分:0)
例如:
public class BooleanEx {
private boolean value;
public BooleanEx() { }
public BooleanEx(boolean value) {
this.value = value;
}
public final boolean setAndCompare(boolean newValue) {
return value == (value = newValue);
}
public final boolean get() {
return value;
}
}
...
final BooleanEx myBoolean = new BooleanEx();
if (myBoolean.setAndCompare(false)) {
}