我用以下内容定义了我的海龟。
turtles-own[val1, posx,posy,value]
我定义了名为
的全局变量xlist ylist vallist
我开始空了。 现在,我想为任何乌龟创建一个具有一个值的列表。
我做到了
to fillLists
set xlist lput posx xlist
set ylist lput posy ylist
set vallist lput value vallist
end
这称为:
ask turtles[fillLists]
例如,如果我有3只以val1命名的海龟, 假设我们有:
t1 =[Mike, 1, 10, 100]
t2 =[Sasha, 2, 20, 200]
t3 =[Rocco, 3, 30, 300]
我想创建列表l1,l2,l3,l4。 内容在哪里:
l1= [Mike, Sasha, Rocco]
l2= [1,2,3]
l3= [10,20,30]
l4= [100,200,300].
但是我尝试的方法不起作用。因为列表返回空。 发生了什么,是一些错误吗?
答案 0 :(得分:1)
我无法重现您的错误,因此您可能需要在调用这些命令的地方添加更多代码。例如,如果我按以下定义运行setup
:
globals [ nameslist xlist ylist vallist ]
turtles-own [ val1 posx posy value ]
to setup
ca
set nameslist []
set xlist []
set ylist []
set vallist []
crt 1 [ set val1 "Mike" set posx 1 set posy 10 set value 100 ]
crt 1 [ set val1 "Sasha" set posx 2 set posy 20 set value 200 ]
crt 1 [ set val1 "Rocco" set posx 3 set posy 30 set value 300 ]
ask turtles [ fill-lists ]
print nameslist
print xlist
print ylist
print vallist
reset-ticks
end
to fill-lists
set nameslist lput val1 nameslist
set xlist lput posx xlist
set ylist lput posy ylist
set vallist lput value vallist
end
我得到如下输出:
[Mike Rocco Sasha]
[1 3 2]
[10 30 20]
[100 300 200]
但是,您可能会发现,仅使用of
来查询海龟中您感兴趣的变量会更简单。例如,下面的代码或多或少地完成了相同的输出,尽管其使用可能取决于您的需要:
turtles-own [ val1 posx posy value ]
to setup
ca
crt 1 [ set val1 "Mike" set posx 1 set posy 10 set value 100 ]
crt 1 [ set val1 "Sasha" set posx 2 set posy 20 set value 200 ]
crt 1 [ set val1 "Rocco" set posx 3 set posy 30 set value 300 ]
print [val1] of turtles
print [posx] of turtles
print [posy] of turtles
print [value] of turtles
reset-ticks
end
输出:
[Sasha Mike Rocco]
[2 1 3]
[20 10 30]
[200 100 300]