2016-11-28 1 views
0

여기 내 처음이야 그래서 내가 올바르게 사용하지 않을 경우 알려 주시기 바랍니다. 방금 ​​Netlogo를 사용하기 시작했으며 뭔가 혼란스러워합니다. 모델 라이브러리에는 Wolf Sheep Predation에 대한 예제 코드가 있습니다. 이 코드에서 다음이 정의됩니다.Netlogo 오류 : 이름이 NAME입니까? 정의되었습니다

globals [grass] 

이렇게 모든 것이 완벽하게 작동합니다. 그러나 나는 도심이 하나를 사용하여 내 자신의 코드를 만들기 시작하고 나는 다음과 같은 오류를 건너 왔어요 :

Nothing named Oxygen? has been defined.

가있는 산소는 내 자신의 변수였다. 잘못된 것이 무엇인지 알아 내기 위해 나는 Wolf Sheep Predation 모델로 돌아가서 글로벌의 이름을 다른 것으로 바꾸려고했습니다. 예 : Strange, (모두 찾기 및 바꾸기, 손으로 몇 번 사용). 잔디를 그라스로 바꿨을 때도 효과가 있었지만 결과는 같은 오류였습니다. 이제 전역에 관한 특정 규칙이 있으며 사용 방법 및 다른 사람들이 왜이 오류가 Wolf Sheep Predation 모델에서 왜 여전히 제공되는지 알 수 있습니까?

(내 모델은 공유 하겠지만 매우 길어서 유용하지 않을 수 있습니다.)

+0

모든 전역 변수는 반드시 'globals'로 선언해야합니다. – Alan

+0

음, 그래, 그게 무슨 뜻이야? 전역 변수의 이름 만 바꾸면 (그리고 동일한 이름으로 지정된 모든 것이) 프로그램이 더 이상 작동하지 않는 이유는 무엇입니까? – Isabelle

+0

'globals'에 선언 된 변수의 이름 만 바꾸면 모든 것이 잘 동작합니다. 그러나'Oxygen'을 선언하면서'Oxygen'이라는 변수를 도입했습니다. – Alan

답변

0

찾기 및 교체시주의해야합니다. "Wolf Sheep Predation"모델에는 매우 비슷한 이름을 가진 두 개의 전역 변수가 있습니다. 먼저 섹션에 정의 된 grass 변수가 있습니다. 둘째, grass?이라는 인터페이스에 스위치 변수가 있습니다.

당신은 "mystring에"와 코드에서 모든 "잔디"문자열과 교체 교체 찾기 및, grassmystring로 변경되지만, grass?mystring?로 변경됩니다 수행합니다. 모델의 인터페이스에 grass?이 정의되어 있으므로이 글로벌의 이름은 변경되지 않고 코드에서 mystring?을 참조 할 때 오류가 발생하지만이 글로벌은 인터페이스 또는 전역 변수 선언에 정의되어 있지 않습니다.

관련 문제