函数外的局部变量
Local variables outside functions
写得好的代码会更容易阅读,所以我想以最好的方式编写我的代码。为此,我需要在函数内部移动一些代码。
在这种情况下,我在外部定义了一个局部变量,应该在函数中调用和使用:
let postman nobody
ask one-of turtles [
set postman my-postman
set shape "person"
; CHECK IF THERE IS ANY EMAIL FOR ME - function from here
if empty? mailbox [
let this-mail self
hatch-mail 1[
hide-turtle
set person postman
set this-mail self
... ; omitted for brevity
]
]
我想改进代码的可读性,将检查邮箱的部分移动到一个函数中。但是,部分代码依赖于邮递员,即外部定义的局部变量。
考虑到这个变量,创建这样一个函数的正确方法是什么?
我怀疑您正试图在程序中使用所谓的 'arguments',其中传递了一些信息。在以下版本的代码中,self
海龟被传递给过程,并在该过程中被称为#turtle(名称是任意的,但我在开头使用# 以明确表示它来自过程参数。
ask one-of turtles
[ set postman my-postman
set shape "person"
if empty? mailbox [ do-something self ]
]
to do-something [#parent] ; observer procedure
ask #parent
[ hatch-mail 1
[ hide-turtle
set person [my-postman] of #parent ; or of myself, since #parent did the asking
set this-mail self
... ; omitted for brevity
]
]
end
写得好的代码会更容易阅读,所以我想以最好的方式编写我的代码。为此,我需要在函数内部移动一些代码。 在这种情况下,我在外部定义了一个局部变量,应该在函数中调用和使用:
let postman nobody
ask one-of turtles [
set postman my-postman
set shape "person"
; CHECK IF THERE IS ANY EMAIL FOR ME - function from here
if empty? mailbox [
let this-mail self
hatch-mail 1[
hide-turtle
set person postman
set this-mail self
... ; omitted for brevity
]
]
我想改进代码的可读性,将检查邮箱的部分移动到一个函数中。但是,部分代码依赖于邮递员,即外部定义的局部变量。
考虑到这个变量,创建这样一个函数的正确方法是什么?
我怀疑您正试图在程序中使用所谓的 'arguments',其中传递了一些信息。在以下版本的代码中,self
海龟被传递给过程,并在该过程中被称为#turtle(名称是任意的,但我在开头使用# 以明确表示它来自过程参数。
ask one-of turtles
[ set postman my-postman
set shape "person"
if empty? mailbox [ do-something self ]
]
to do-something [#parent] ; observer procedure
ask #parent
[ hatch-mail 1
[ hide-turtle
set person [my-postman] of #parent ; or of myself, since #parent did the asking
set this-mail self
... ; omitted for brevity
]
]
end