是否有一个数据结构的名称(读取:布尔值)只能从 false 移动到 true,而不能返回到 false?想象一下像这样封装的东西:
private var _value = false
def value = _value
def turnOnValue() = value = true
出于好奇,是否有任何平台原生支持它?这似乎是某人以前遇到过的事情......
是否有一个数据结构的名称(读取:布尔值)只能从 false 移动到 true,而不能返回到 false?想象一下像这样封装的东西:
private var _value = false
def value = _value
def turnOnValue() = value = true
出于好奇,是否有任何平台原生支持它?这似乎是某人以前遇到过的事情......
您正在描述变量的时间属性;而不是这样的数据结构。数据类型是一个简单的布尔值,但有趣的是它的使用方式——作为一种及时的“锁存器”。
boolean 数据类型的这种闩锁属性将使其成为线性类型 boolean的示例。线性类型和其他类型的唯一性类型用于强制变量的时间属性——例如,它们只能使用一次;或无法共享。
它们对于在编译时强制执行已发生的操作(例如初始化)或在编译时证明对象未被共享很有用。因此,它们在系统编程中最常见,其中低级属性的证明是正确软件设计的关键。
在 perl 中,你有 Tie 变量,你可以建立你的标量值并制作这种“类型”。但在本机......也许在 Smalltalk 中可以构建类似这样的东西,或者 Prolog,但我不知道。
制作自己的数据类型
public final class CustomBoolean {
private boolean value;
public void setValue(boolean value){
// Bitwise OR
this.value |= value;
}
public boolean getValue(){
return value;
}
}
例子 ::
public static void main (String[] args)
{
CustomBoolean foo = new CustomBoolean();
foo.setValue(false);
System.out.println(foo.getValue());
foo.setValue(true);
System.out.println(foo.getValue());
foo.setValue(false);
System.out.println(foo.getValue());
}
输出将是::
false
true
true
这意味着您必须在执行任何显式布尔操作之前调用 getValue() ,即
if(foo.getValue() && 1 == 1)
该示例是用 Java 编写的。