Netlogo程序输入:是否可能通过引用调用?
是否有一种方法可以将输入传递给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
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
当然,如果不需要,最好不要使用可变性。不,这是在语言设计中故意禁止的。不,这是在语言设计中故意禁止的。