使用Let的Netlogo可变范围

时间:2019-04-25 14:47:26

标签: if-statement scope

常规CS问题,因为我对Netlogo中let的行为感到惊讶。

如果我从下面的if语句中声明变量,将变量的范围限制在if语句是否常见?

我认为范围通常是指函数,而不是像循环或if语句那样的构造。那有多普遍?

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

print(i)

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

1 个答案:

答案 0 :(得分:1)

我不确定,是否可以回答您的问题,但是使用let创建的有关局部变量的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

如果在ififelse语句中创建局部变量,则同样如此。因此,如果您想稍后使用该变量,请在ifelse语句之前和之外用let进行声明。比在set语句中用ifelse分配值。