OZプログラミング言語:ブールガード
-
27-10-2019 - |
質問
私は学校で、Mozartプログラミングインターフェイスを使用する必要がある科目を取得しています。私はこれまでのところそれを本当に考えていません。しかし、とにかく、ここに質問があります:
OZでは、変数を1回だけ割り当てることができます(再割り当てすることはできませんが、私が正しい場合は現在の範囲で再宣言されますか?)。ブールガードを使用したいという問題に遭遇しましたが、オズは私をさせませんでした。私は現在を持っています:
declare
BrowserObject = {New Browser.'class' init}
BrowserSetup = false
proc {Browse Bs}
if BrowserSetup == false then
{BrowserObject option(representation strings:true)}
{BrowserObject option(representation virtualStrings:true)}
BrowserSetup = true
end
{BrowserObject browse(Bs)}
end
誰かがこれを行う方法のアイデアを持っていますか?御時間ありがとうございます。
解決
これを行うには多くの方法があります。
最も簡単なのは、ブラウザオブジェクトを作成した直後にセットアップすることです。警備員は必要ありません。
可変変数を使用する場合は、セルを見てください。例えば:
BrowserSetup = {NewCell false}
...
if @BrowserSetup == false ...
BrowserSetup := true
ただし、これはスレッドセーフではありません。つまり、複数のスレッドからの参照手順を使用する場合は問題です。
最良の方法は、おそらくbrowserObjectに怠zyな初期化を使用することです。つまり、初めて使用された場合にのみ作成および初期化することです。これを使用する場合は、「value.byneed」のドキュメントをご覧ください。
言語にチャンスを与えることをお勧めします。それはほとんどの言語とはまったく異なり、おそらく「現実の世界で」それを決して使用しないでしょう。しかし、学ぶべきことがたくさんあり、研究言語のますます多くの概念が主流の言語への道を見つけています。
所属していません StackOverflow