0

私はモーツァルトプログラミングインターフェースを使用する必要がある学校で科目を取っています。今のところあまり考えていません。しかしとにかく、ここに質問があります:

OZでは、変数を割り当てることができるのは1回だけです(再割り当てすることはできませんが、現在のスコープで再宣言することができますか?)。ブールガードを使用したいという問題に遭遇しましたが、OZは私を許可しません。私は現在を持っています:

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

誰かがこれを行う方法について何かアイデアがありますか?御時間ありがとうございます。

4

1 に答える 1

1

これを行うには多くの方法があります。

最も簡単なのは、ブラウザオブジェクトを作成した直後に設定することです。警備員は必要ありません。

可変変数を使用する場合は、セルを確認してください。例えば:

BrowserSetup = {NewCell false}
...
if @BrowserSetup == false ...
BrowserSetup := true

ただし、これはスレッドセーフではありません。つまり、複数のスレッドからブラウズプロシージャを使用する場合は問題になります。

おそらく最良の方法は、BrowserObjectに遅延初期化を使用することです。つまり、初めて使用するときにのみ作成して初期化します。これを使用する場合は、「Value.byNeed」のドキュメントを参照してください。

言語にチャンスを与えることをお勧めします。ほとんどの言語とはかなり異なり、「現実の世界」で使用することはおそらくないでしょう。しかし、学ぶべきことはたくさんあり、研究言語の概念はますます主流の言語に取り入れられています。

于 2011-09-07T18:26:07.657 に答える