受到这个问题的启发,我尝试使用并行赋值和数组、方法调用互相搭配。下面是一个典型的例子,尝试通过值来交换数组中的两个成员:
deck = ['A', 'B', 'C']
#=> ["A", "B", "C"]
deck[deck.index("A")], deck[deck.index("B")] = deck[deck.index("B")], deck[deck.index("A")]
#=> ["B", "A"]
deck
#=> ["A", "B", "C"]
数组没有改变。但是如果我们改变参数的顺序,它就可以工作:
deck[deck.index("B")], deck[deck.index("A")] = deck[deck.index("A")], deck[deck.index("B")]
#=> ["A", "B"]
deck
#=> ["B", "A", "C"]
我猜这与在赋值中调用index
方法的顺序有关,但我没有看清楚。可以有人解释一下下面的事情顺序以及为什么第一个示例没有交换成员,而第二个示例交换了吗?