尝试使用 to-report 将列表值作为 return 值

Trying to get a list value as return value with to-report

我想从带有报告的列表中获取特定值。我尝试使用以下代码来完成:

to go
   print get-list [3]
end

to-report get-list [val]
  let list-name [1 2 3 4 5 6]
  report item val list-name
end

但是,我收到以下错误消息 "ITEM expected input to be a number but got the list [3] instead."

User-defined 过程在括号中声明它们的参数,但是(与内置的 NetLogo 原语一样)我们在使用这些过程时不将参数放在括号中。所以你想要 print get-list 3 而不是 print get-list [3].

顺便说一下,当您声明 to-report get-list [val] 时,就排除了将 val 用作全局变量。 (NetLogo 不允许局部标识符遮盖全局标识符。)因此我建议采用一种约定,将您选择的特定符号添加到过程参数之前。我的偏好是 octothorpe,所以过程 header 变成了 to-report get-list [#val]。这绝对不是标准的 NetLogo 约定,但尽管如此,我还是推荐它。

或者为了快速修复,

print get-list item 0 [3]