2016-11-28 2 views
0

Es ist mein erstes Mal hier, also wenn ich nicht richtig benutze bitte lassen Sie es mich wissen. Ich habe gerade angefangen, Netlogo zu benutzen und ich bin etwas verwirrt über etwas. In der Modellbibliothek gibt es den Beispielcode für Wolf Sheep Predation. In diesem Code ist folgendes definiert:Netlogo Fehler: Nichts mit dem Namen NAME? wurde definiert

globals [grass] 

Also alles funktioniert einwandfrei. Aber dann begann ich meinen eigenen Code zu machen, indem diese eine als Basis und ich kam in den folgenden Fehlern:

Nothing named Oxygen? has been defined.

, in denen Sauerstoff meine eigene Variable war. Um herauszufinden, was los war, ging ich zurück zum Wolfschaf-Predationsmodell und versuchte, den Namen des Globalen auf etwas anderes zu ändern. Zum Beispiel: Seltsam, (mit Suchen und Ersetzen alle, auch mit der Hand ein paar Mal). Das Ergebnis war der gleiche Fehler, aber wenn ich nur Gras zu Grass änderte, würde es funktionieren. Nun würde ich wissen, gibt es irgendwelche speziellen Regeln bezüglich Globals und wie sie verwendet werden und weiß vielleicht jemand, warum dieser Fehler immer noch im Wolf Sheep Predation Modell gegeben ist?

(Ich würde mein eigenes Modell teilen, aber es ist sehr lang geworden, also könnte es nicht ein so nützliches Beispiel sein).

+0

Alle globalen Variablen müssen mit 'globals' deklariert werden. – Alan

+0

Ähm ja, aber was heißt das? Warum funktioniert das Programm nicht mehr, wenn Sie nur den Namen einer globalen Variablen ändern (und natürlich alles, was den gleichen Namen hat)? – Isabelle

+0

Wenn Sie überall nur die Namen der in 'globals' deklarierten Variablen ersetzen, wird alles funktionieren. Aber Sie haben "Oxygen" deklariert, als Sie eine Variable namens "Oxygen?" – Alan

Antwort

0

Sie müssen beim Suchen und Ersetzen vorsichtig sein. Im "Wolf Sheep Predation" -Modell gibt es zwei globale Variablen mit sehr ähnlichen Namen. Zuerst gibt es die grass Variable, die im Abschnitt globals [grass] definiert ist. Zweitens gibt es eine Switch-Variable auf der Schnittstelle grass?.

Wenn Sie ausführen finden und Ersetzen, und ersetzen Sie alle „Gras“ Strings im Code mit „mystring“, grass-mystring ändern wird, aber grass? wird auch mystring? ändern. Da grass? auf der Schnittstelle des Modells definiert ist, bleibt der Name dieser globalen Variable unverändert und der Code erzeugt einen Fehler, wie Sie im Code auf mystring? verweisen, aber dieses global ist weder in der Schnittstelle noch in der globalen Variablendeklaration definiert.

Verwandte Themen