Netlogo Переменная Область с Let - PullRequest
0 голосов
/ 25 апреля 2019

Общий вопрос CS, потому что я был удивлен поведением let в Netlogo.

Если я объявляю переменную из нижеследующего оператора if, то обычно ли область действия этой переменной ограничивается этим оператором if?

Я думал, что область действия обычно ссылается на функции, а не на конструкции, подобные циклу или оператору if. Насколько это распространено?

if x > y :
     int i = 2
else:
     int i = 3

print(i)

would return: "error: (i) does not exist" 

1 Ответ

1 голос
/ 25 апреля 2019

Я не уверен, если это отвечает на ваш вопрос, но Руководство по программированию Netlogo для локальных переменных, созданное с помощью let, гласит:

Локальные переменные

Локальная переменная определяется и используется только в контексте конкретная процедура или часть процедуры. Создать местный переменная, используйте команду let. Если вы используете пусть в верхней части Процедура, переменная будет существовать на протяжении всей процедуры. если ты используйте его внутри набора квадратных скобок, например, внутри «аск», тогда он будет существовать только внутри этих скобок.

to swap-colors [turtle1 turtle2]
  let temp [color] of turtle1
  ask turtle1 [ set color [color] of turtle2 ]
  ask turtle2 [ set color temp ]
end

То же самое верно, если локальные переменные создаются в операторе if или ifelse. Поэтому, если вы хотите использовать переменную позже, объявите ее до и вне оператора ifelse с помощью let. Чем присвоить значение с помощью set в операторе ifelse.

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