Netlogo程序输入:是否可能通过引用调用?

Netlogo程序输入:是否可能通过引用调用?,netlogo,Netlogo,是否有一种方法可以将输入传递给netlogo过程,从而可以在过程中修改输入值?例如: to test let value 200 test2 value print value end to test2 [v] set v v + 1 end 如果你运行这个,它将输出200。我想以某种方式修改它(不使用全局变量,也不使用报告程序),以获得输出201。您可以使用可变对象,如数组或表 extensions [table array] to test let _a array

是否有一种方法可以将输入传递给netlogo过程,从而可以在过程中修改输入值?例如:

to test
  let value 200
  test2 value
  print value
end

to test2 [v]
  set v v + 1
end

如果你运行这个,它将输出200。我想以某种方式修改它(不使用全局变量,也不使用报告程序),以获得输出201。

您可以使用可变对象,如数组或表

extensions [table array]

to test
  let _a array:from-list n-values 10 [0]
  increment-aval _a 0
  print _a

  let _t table:make
  let _key "key1"
  table:put _t _key 0
  increment-tval _t _key
  print _t
end

to increment-aval [#a #i]
  let _old array:item #a #i
  array:set #a #i (1 + _old)
end

to increment-tval [#t #key]
  let _old table:get #t #key
  table:put #t #key (1 + _old)
end

当然,如果不需要,最好不要使用可变性。

可以使用可变对象,如数组或表

extensions [table array]

to test
  let _a array:from-list n-values 10 [0]
  increment-aval _a 0
  print _a

  let _t table:make
  let _key "key1"
  table:put _t _key 0
  increment-tval _t _key
  print _t
end

to increment-aval [#a #i]
  let _old array:item #a #i
  array:set #a #i (1 + _old)
end

to increment-tval [#t #key]
  let _old table:get #t #key
  table:put #t #key (1 + _old)
end

当然,如果不需要,最好不要使用可变性。

不,这是在语言设计中故意禁止的。不,这是在语言设计中故意禁止的。