Data structures 只能翻转为true的布尔值

Data structures 只能翻转为true的布尔值,data-structures,types,unique,Data Structures,Types,Unique,数据结构(读取:布尔值)是否有一个名称只能从false移到true,而不能返回false?想象一下这样的情况: private var _value = false def value = _value def turnOnValue() = value = true 出于好奇,有没有本地支持它的平台?在perl中,您有Tie变量,可以在标量值的基础上构建,并生成这种“类型”。但是天生的。。。也许在Smalltalk中可以构建这样的东西,或者Prolog,但我不知道;而不是数据结构本身。数据类

数据结构(读取:布尔值)是否有一个名称只能从false移到true,而不能返回false?想象一下这样的情况:

private var _value = false
def value = _value
def turnOnValue() = value = true

出于好奇,有没有本地支持它的平台?在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() 即


这个例子是用Java编写的

如果我阅读的维基百科帖子是正确的,那么你只能阅读一次线性类型的布尔值-对于OP的要求似乎没有用处。有许多不同的“线性”类型系统和属性-这是其中一个例子。@RichardPianka哦,好的。就像。。。人字拖。。。没有失败?我刚看到你的定义;然而,我更喜欢我的实现,因为它允许像setValue(a&&b)一样设置它,而不是if(a&&b)turnOnValue()
if(foo.getValue() && 1 == 1)