Ожидаемый ввод будет числом, но получил ИСТИНА / ЛОЖЬ

У меня есть этот блок кода:

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

Когда я запускаю симуляцию, я получаю следующее сообщение об ошибке

+ expected input to be a number but got the TRUE/FALSE false instead.
error while unefeebleue 2 running +
  called by procedure CATCH-ROSE
    called by procedure GO
    called by Button 'go'*

Я пытался решить свою проблему сам, но не могу. Почему он не хочет распознавать вторую команду SET? Почему он думает, что это правда / ложь?

1 ответ

Решение

Сообщение об ошибке говорит вам следующее:

  1. Начинается с операции, которая не удалась. Часто это имя процедуры, в данном случае это +, Итак, вы знаете, что это один из входов в + это терпит неудачу.
  2. Он говорит вам, что один из входов в + это TRUE/FALSE значение.

Теперь вы сказали нам, что строка, на которую он ссылается, является второй set заявление. Есть два входа в + на этой линии, rose_ramasse а также 1

Итак, ваша проблема в том, что rose_ramasse это TRUE/FALSE (булево) значение. Без остальной части вашего кода не ясно, rose_ramasse является глобальной переменной или нет, так что трудно пойти дальше, чтобы помочь вам понять, где rose_ramasse присваивается логическое значение.

Я могу воспроизвести сообщение об ошибке с помощью простой функции, подобной следующей:

globals [age]

to go
    set age TRUE
    set age age + 1
Другие вопросы по тегам