作为新手,看到这样的语法,无语了

作为新手,看到这样的语法,无语了

资料里
a = 1 ;b = 2 + 3    ;print "a=",a," b=",b,"\n" 
输出:a=1 b=5
这句没什么问题。ok pa
a,b=b,a        ;print "a=",a," b=",b,"\n"
这句输出: a=5 b=1
想不通第一眼的理解
a,b=b,a        ;汗一个,a,(b=b),a
发现和结果对不上
继续改造代码
(a,b)=(b,a); 汗,还是不对
再来改造
a,b,c=b,a,2        ;print "a=",a," b=",b," c=",c,"\n"
发现输出:a=5 b=1 c=2
恩应该是一一对应
然后
a,b,c=b,a,a
输出:a=5 b=1 c=1
这样就可以得出
a,b,c=b,a,a;绝不等价于
a=b;b=a;c=a;因为上面的出数 a=1 b=1 c=1
但又遇到一个奇怪的问题:
因为不留神
将a=b;b=a;c=a打成了a=b;b=a,c=a 这句
这时的输出:a=1 b=11 c=1
盯着代码好久反应过来
解释器应该这样解析 a=b;
c=a;
b= a,c
这时b就是一个数组了
-----------------------------------
!!!php?name=%D0%C2%CA%D6" onclick="tagshow(event)" class="t_tag">新手容易么???!!!
呵呵,每个人都有一个过程的。这个逗号赋值表达式我以前看Python的时候就会了。交换变量挺好的。

a,b = b,a


[Copy to clipboard] [ - ]
Ruby让你兴奋了
并行赋值方便和难以理解的地方。
难以理解吗?
抛弃一些常规静态语言的习惯,彻底投入动态语言中,你会发现这世界很美妙。
最近一直在转变动态语言和静态语言的理解和思想,发现果然是白纸好画画
我觉得有点编程基础的人应该不难理解。
还有,你以后说话要注意!谢谢