是否有一个数据结构的名称(读取:boolean)只能从false移动到true,而不能返回false?想象一下像这样封装的东西:
private var _value = false
def value = _value
def turnOnValue() = value = true
出于好奇,是否有任何平台本机支持它?这似乎是某人之前必须遇到的事情......
答案 0 :(得分:3)
您正在描述变量的时间属性;而不是像这样的数据结构。数据类型是一个简单的布尔值,但它的使用方式很有趣 - 作为一种'闩锁'及时。
布尔数据类型上的那种latch属性会使它成为 linearly typed boolean 的示例。线性类型和其他类型的uniqueness类型用于强制变量的时间属性 - 例如它们只能使用一次;或者不能分享。
它们对于在编译时强制执行某个操作(例如初始化)或具有不共享对象的编译时证明非常有用。因此,它们在系统编程中最为常见,其中低级属性的证明是纠正软件设计的关键。
答案 1 :(得分:0)
在Perl中你有Tie Variables,你可以建立你的标量值并使这种“类型”。但本地......也许在Smalltalk中可以构建类似这样的东西,或Prolog,但我不知道。
答案 2 :(得分:0)
制作您自己的数据类型
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编写。