1

falseからtrueにのみ移動でき、falseに戻すことはできないデータ構造(読み取り:ブール値)の名前はありますか?次のようにカプセル化されたものを想像してみてください。

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

そして好奇心から、それをネイティブにサポートするプラットフォームはありますか?これは誰かが以前に出くわしたに違いない何かのようです...

4

3 に答える 3

3

変数の時間的プロパティを記述しています。データ構造そのものではなく。データ型は単純なブール値ですが、興味深いのはそれがどのように使用されるかです-時間の一種の「ラッチ」として。

ブールデータ型のこの種のラッチプロパティは、線形型のブール型の例になります。線形型、および他の種類の一意性型は、変数の時間的プロパティを適用するために使用されます。たとえば、変数は1回しか使用できません。または共有できません。

これらは、コンパイル時にアクション(初期化など)が発生したことを強制したり、オブジェクトが共有されていないことをコンパイル時に証明したりする場合に役立ちます。したがって、これらはシステムプログラミングで最も一般的であり、この低レベルのプロパティの証明がソフトウェア設計を修正するための鍵となります。

于 2012-05-12T00:19:16.617 に答える
0

perlにはTieVariablesがあり、スカラー値に基づいてこの種の「タイプ」を作成できます。しかし、ネイティブに... Smalltalkでこのようなもの、またはPrologを構築することは可能かもしれませんが、私にはわかりません。

于 2012-05-12T00:18:39.750 に答える
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 で書かれています。

于 2012-05-12T00:30:52.507 に答える