我是Netlogo的新手。我正在尝试使用库的多区域示例中包含的代码。但是我在这个程序中遇到一个错误
to keep-in-region [ which-region ]
if region != which-region [
let region-min-pxcor first item (which-region - 1) region-boundaries
let region-max-pxcor last item (which-region - 1) region-boundaries
let region-width (region-max-pxcor - region-min-pxcor) + 1
ifelse xcor < region-min-pxcor [
set xcor xcor + region-width ]
[if xcor > region-max-pxcor [
set xcor xcor - region-width
]
]
]
我得到的错误是....任何建议?提前致谢
-1没有esta mas que o等于cero。 卖家31运行ITEM时出错 由程序KEEP-IN-REGION调用 由程序ADJUST调用 由程序GO调用 由Botón'go'呼叫
答案 0 :(得分:2)
你得到的错误(“-1不大于或等于零。”,一旦翻译成英文)是由于传递-1作为item
原语的索引。
代码中有两行使用item
:
let region-min-pxcor first item (which-region - 1) region-boundaries
let region-max-pxcor last item (which-region - 1) region-boundaries
正如您所看到的,(which-region - 1)
是传递给item
的表达式作为索引。如果您收到-1
,则必须是因为which-region = 0
。
在“多个区域示例”模型中,区域0
保留用于不属于任何区域的修补程序,即用作区域边界的修补程序。区域本身编号为1。
在代码中查找调用keep-in-region
的位置,并确保使用的区域编号介于1和您拥有的区域数之间(包括)。
免责声明:我最初编写了“多区域”代码示例。也许我可以使用像nobody
之类的值来获取任何区域之外的补丁,并将实际区域从0开始而不是从1开始编号,但我不记得我是否主动决定反对它或者只是没想到它的。