Netlogo 预期输入为数字,但为真/假

Netlogo 预期输入为数字,但为真/假,netlogo,Netlogo,我得到了这段代码: to catch-rose let prey one-of roses-here if prey != nobody [ set energy energy + 1 set rose_ramasse rose_ramasse + 1 ask prey [ die ] ] end 当我启动模拟

我得到了这段代码:

to catch-rose
  let prey one-of roses-here                    
  if prey != nobody                      
    [
     set energy energy + 1
     set rose_ramasse rose_ramasse + 1
     ask prey [ die ]                        
    ]
end
当我启动模拟时,我得到以下错误消息


我一直想自己解决我的问题,但我做不到。为什么它不想识别第二个SET命令?为什么它认为这是真/假陈述?

错误消息告诉您:

globals [age]

to go
    set age TRUE
    set age age + 1
  • 它从失败的操作开始。这通常是一个过程名,在本例中是
    +
    。因此,您知道,
    +
    的输入之一失败
  • 它告诉您,
    +
    的输入之一是
    真/假
    现在,您已经告诉我们,它所指的行是第二个
    set
    语句。该行有两个到
    +
    的输入,
    rose_ramasse
    1

    所以,您的问题是,
    rose_ramasse
    是一个
    TRUE/FALSE
    (布尔)值。如果没有剩下的代码,就不清楚
    rose_-ramasse
    是否是全局变量,因此很难进一步帮助您确定在哪里为
    rose_-ramasse
    分配了布尔值

    我可以使用以下简单函数复制错误消息:

    globals [age]
    
    to go
        set age TRUE
        set age age + 1
    

    energy
    rose_-ramasse
    都是数值吗?看起来,
    +
    运算符正在抱怨它的一个输入是
    真/假
    而不是数字。由于
    1
    显然是一个数字,我猜变量不是。如果我添加的变量不是一个数字,我就会得到这个错误。找到原因很有帮助,实际上这是一个简单的错误,我没有初始化rose_ramasse=0,比如energy=5