2016-11-28 6 views
0

私はここに初めてですので、正しく使用していない場合はお知らせください。 Netlogoを使い始めたばかりなので、何かについて混乱しています。 モデルライブラリには、Wolf Sheep Predationのサンプルコードがあります。このコードでは、次のように定義されています。Netlogoエラー:名前は何もありませんか?が定義されています

globals [grass] 

すべてが正常に動作します。しかし、その後、私はベースとして、このいずれかを使用して、自分自身のコードを作り始めて、私は次のエラーに出くわした:私自身の変数だった

Nothing named Oxygen? has been defined.

た酸素で。何が間違っていたかを知るために、私はWolf Sheep Predationモデルに戻り、グローバルの名前を何かに変更しようとしました。例えば:Strange、(findとreplaceの両方を使い、数回手で)結果は同じエラーでしたが、私は草をGrassに変更しても動作しました。今では、グローバルに関する特定のルールと、それらの使用方法を知りたいと思っています。そして、このエラーがWolf Sheep Predationモデル内でまだ与えられている理由を知っている人は誰ですか?

(私は自分のモデルを共有しますが、それは非常に長くなっているので、あまり有用ではないかもしれません)。

+0

すべてのグローバル変数は 'globals'で宣言する必要があります。 – Alan

+0

そうですね、それはどういう意味ですか?グローバル変数の名前だけを変更すると(そして同じ名前に指定されたすべてのもの)、プログラムはもはや動かないのはなぜですか? – Isabelle

+0

'globals'で宣言された変数の名前だけをどこに置き換えても、すべて正常に動作します。しかし、あなたは 'Oxygen'を宣言し、' Oxygen? 'という変数を導入しました。 – Alan

答えて

0

検索と交換には注意が必要です。 「Wolf Sheep Predation」モデルには、非常に似た名前の2つのグローバル変数があります。最初に、セクションで定義されたgrass変数があります。次に、grass?という名前のインターフェイスにスイッチ変数があります。

あなたは「のMyString」と、コード内のすべての「草」文字列を検索と置換および置換を実行した場合、grassmystringに変更されますが、grass?mystring?に変更されます。 grass?がモデルのインターフェイスで定義されているため、このグローバルの名前は変更されず、コード内でmystring?を参照するとエラーが発生しますが、このグローバルはインターフェイスまたはグローバル変数宣言では定義されません。

関連する問題