Проблема с анонимными процедурами NetLo go - PullRequest
1 голос
/ 10 января 2020

У меня проблемы с преобразованием старого кода NetLo go для работы с NetLo go 6.0.1

У меня возникла следующая строка:

set recv turtle (read-from-string ?)

I знаете что? был изменен на ->. Но я не могу понять, как работает эта строка.

Весь код:

to send [msg]
  let recipients get-receivers msg
  let recv 0
  foreach recipients [
   set recv turtle (read-from-string ?)
   if recv != nobody [without-interruption [ask recv [receive msg]]] ;; read-from-string is required to convert the string to number
  ]
end

1 Ответ

2 голосов
/ 11 января 2020

?, представляющий каждый элемент recipients, теперь заменяется локальной переменной, объявленной в скобках foreach. Здесь я объявил переменную recip, но это может быть все, что вы захотите.

    to send [msg]
      let recipients get-receivers msg
      let recv 0
      foreach recipients [recip ->
       set recv turtle (read-from-string recip)
       if recv != nobody [without-interruption [ask recv [receive msg]]] ;; read-from-string is required to convert the string to number
      ]
    end

В этом есть две приятные вещи: вы можете «назвать» знак вопроса, чтобы было легче запомнить, что он обозначает, и, если вы выполняете итерацию по нескольким спискам, вы можете объявить более одной переменной, по одной для каждого списка.

Charles

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...