函数外的局部变量

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