• @Tony612 我又做了一个试验。如果单个赋值的话按正常理解没有任何问题 irb(main):001:0> x=1 => 1 irb(main):002:0> y=2 => 2 irb(main):003:0> x.object_id => 3 irb(main):004:0> y.object_id => 5 irb(main):005:0> x=y => 2 irb(main):006:0> x.object_id => 5 irb(main):007:0> y => 2 irb(main):008:0> y.object_id => 5 irb(main):009:0> y=x => 2 irb(main):010:0> y.object_id => 5 irb(main):011:0> puts x,y 2 2

  • #1 楼 @Tony612 非常感谢您的回答。您这个代码很不错~非常感谢。另外,从您的例子来看 1.9.3-p362 :006 > x, y = y, x => [2, 1] 1.9.3-p362 :007 > x.object_id => 5 1.9.3-p362 :008 > y.object_id => 3

    其实底层是 object_id 做了交换!或许在解释器执行的时候存在过一个临时 的 temp,ruby 把这部分工作也做了?

    欢迎继续讨论,新手问题,望各位不吝赐教,在此先谢过了

  • #10 楼 @yorzi 我也在北京,不过也准备 回老家西安了。发现西安招 Ruby 的人也好少阿~