我不太清楚是否有其它做法,但是至少它是可以 work 的。
首先若以 sanc 来说,如果做如下宣告
mixed tmps=({1,2,({3,4})});
mixed tmps1,tmps2;
tmps1=tmps;
tmps2=tmps;
tmps1[2][1]=5;
write("tmps1="+identify(tmps1)+"\ntmps2="+identify(tmps2)+"\n");
它的执行结果
tmps1={1,2,{3,5}}
tmps2={1,2,{3,5}}
在 javascript 里头,如果用相同的写法,当 tmps1 的值变更时,tmps2
的值也会跟着变更。
javascript 的场合,我后来使用以下的写法
tmps1=tmps.slice(); // 将 tmps 里面的东西 copy 给 tmps1
tmps2=tmps.slice(); // 将 tmps 里面的东西 copy 给 tmps2
仍是不行,这是因为 tmps 里面有一个子阵列 [3,4],必须连这个也使
用 slice copy 才行,所以后来采用的土法炼钢做法:
n=tmps.length;
tmps1=new Array(n);
tmps2=new Array(n);
for(i=0;i<tmps.length;i++)
{
tmps1[i]=tmps[i].slice();
tmps2[i]=tmps[i].slice();
}
这样 tmps1 及 tmps2 才会是互相独立的个体,有几个子阵列就得这样
做或采用别的写法,来确保每一个元素都是复制过去的而非只是"指向"
,指向的结果就是当元素改变时,指向它的另一个阵列的元素也会跟着
改变。
==============================================================
最近就是都在公司搞这些东西,算是超前部署,当明年突然被要求要交
什么什么的时候,有东西可以马上 show 出来,主要是参考以下的电影
https://www.youtube.com/watch?v=dUKWDxKAlk4
https://www.youtube.com/watch?v=jnzzKCUdvG8
电影里的 fortran 编程其实也不是什么高深的学问,跟 javascript在
我公司、我单位的利用大致差不多,但是,javascript 实际上是相当
好用的东西,即便是像我这样自学且只是会一点皮毛这样。
因为它一直很好用,在我的工作上,所以我一直在写相关的东西。那经
过长时间的验证,coding 改用 notepad++ 并改为黑底绿字后,已经没
再出现眼睛神经不正常抽动的情况。
只是目前还不确定会不会再 coding sanc。该写的系统都写了,系统写
好后要让它 work 就得写副本及建资料,这部份我就不行了,说到底只
有一个人要发展真的挺困难的,除非我能全心全力把时间跟精力都用在
sanc,但目前光以工作来说,我的工作环境就比以前复杂了。
近况大概是这样,藉这篇顺便。
Laechan