是否有隻能從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
而且出於好奇,有沒有支持它本身的任何平臺?這似乎是某人之前必須遇到的東西...
您正在描述變量的時態屬性;而不是像這樣的數據結構。數據類型是一個簡單的布爾值,但它是如何使用它是有趣的 - 作爲一種「閂鎖」的時間。
布爾數據類型的這種閂鎖屬性將使其成爲linearly typed boolean的示例。使用線性類型和其他種類的uniqueness類型來強制變量的時間屬性 - 例如,他們只能使用一次;或者不能共享。
它們對於在編譯時強制執行某個操作(例如初始化)或編譯時證明一個對象不被共享很有用。因此,它們在系統編程中最爲常見,其中低級特性的證明是正確軟件設計的關鍵。
在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編寫。
我在找一個名字。 –
@RichardPianka哦,好的。這就像......一個觸發器......沒有翻牌圈?我剛看到你的定義;然而,我更喜歡我的實現,因爲它允許將其設置爲像setValue(a && b)一樣,而不是如果(a && b)turnOnValue() – AlanFoster
如果我正確閱讀wikipedia帖子,則只能讀取一次線性類型的布爾值 - 對於OP請求的內容似乎沒有用處。 –
有許多不同的「線性」類型的系統和屬性 - 這是其中之一的一個例子。 –