主题:  有关列表的sort命令

DoDoDo

职务:普通成员
等级:1
金币:2.0
发贴:174
注册:2002/12/19 16:53:49
#12004/3/18 15:19:47
a=[3,1,0,5]
b=a
sort b
put a

结果 竟然是[0,1,3,5]。我只是对b进行排序,不想对a排序呀。怎样不对a排序呢?



DoDoDo

职务:普通成员
等级:1
金币:2.0
发贴:174
注册:2002/12/19 16:53:49
#22004/3/18 15:46:13
弄的人头痛,来招毒的:
a=[3,1,0,5]
c=string(a)
b=value(c)
sort b
put a
这下可不变了:
[3,1,0,5]



愁眉不展

职务:普通成员
等级:1
金币:0.0
发贴:114
注册:2000/12/21 16:27:18
#32004/3/18 16:50:49
使用duplicate复制list,引用同一个list,自然都变了



我是小马

职务:普通成员
等级:3
金币:17.0
发贴:794
注册:2000/11/13 14:56:59
#42004/3/20 2:05:10
这样不会出问题了:
a=[3,1,0,5]
repeat with i = 1 to 4
b[i] = a[i]
end repeat
sort b
put a



DoDoDo

职务:普通成员
等级:1
金币:2.0
发贴:174
注册:2002/12/19 16:53:49
#52004/3/22 8:32:20
我查到资料了,原来,
a=[3,1,0,5]
b=a
b保存的只是一个指针结构,所以改变b也就改变了a。如果要b另辟一个内存块来保存[3,1,0,5],只需要b=duplicate(a)就可以了。
当然,用c=string(a)
b=value(c)或者是用循环来赋值也都是可以解决问题的。