0
@current_engine, engine_was = engine.to_sym, @current_engine
我怎麼能解釋這個表達式或建議,請在哪裏可以找到這種表達的定義,起初我還以爲有交換價值變量交換?
@current_engine, engine_was = engine.to_sym, @current_engine
我怎麼能解釋這個表達式或建議,請在哪裏可以找到這種表達的定義,起初我還以爲有交換價值變量交換?
它所謂的「平行作業」(現在你可以google一下) 。它或多或少與此相當:
_a = engine.to_sym
_b = @current_engine
@current_engine = _a
engine_was = _b
首先,評估右側的值,然後分配它們。這就是爲什麼你也可以使用這種伎倆來交換值:
x, y = y, x
當y
將被分配的x
價值,它將使用舊的價值,它在這個表達式的開始舉行。
可以展開到這一點的三個步驟:從陣列的
創建:
a = engine.to_sym, @current_engine
# => [ 1, 0 ]
分配數組表達的左側。
擴大陣列到指定的增值經銷商:
@current_engine = a[ 0 ]
engine_was = a[ 1 ]
的答案解釋分配如何並行可用於交換價值(這裏),但它有時會在一個比較通俗的方式使用:' a,b = 1,2',導致a => 1,b => 2。有些人喜歡這樣,其他人不喜歡。就我個人而言,我保留交換的平行分配。 –
@CarySwoveland:很好的說明,謝謝:) –