常规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"
答案 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
如果在if
或ifelse
语句中创建局部变量,则同样如此。因此,如果您想稍后使用该变量,请在ifelse
语句之前和之外用let
进行声明。比在set
语句中用ifelse
分配值。