2014-01-30 62 views
0
@current_engine, engine_was = engine.to_sym, @current_engine 

我怎麼能解釋這個表達式或建議,請在哪裏可以找到這種表達的定義,起初我還以爲有交換價值變量交換?

+2

的答案解釋分配如何並行可用於交換價值(這裏),但它有時會在一個比較通俗的方式使用:' a,b = 1,2',導致a => 1,b => 2。有些人喜歡這樣,其他人不喜歡。就我個人而言,我保留交換的平行分配。 –

+0

@CarySwoveland:很好的說明,謝謝:) –

回答

1

它所謂的「平行作業」(現在你可以google一下) 。它或多或少與此相當:

_a = engine.to_sym 
_b = @current_engine 
@current_engine = _a 
engine_was = _b 

首先,評估右側的值,然後分配它們。這就是爲什麼你也可以使用這種伎倆來交換值:

x, y = y, x 

y將被分配的x價值,它將使用舊的價值,它在這個表達式的開始舉行。

1

可以展開到這一點的三個步驟:從陣列的

  1. 創建:

    a = engine.to_sym, @current_engine 
    # => [ 1, 0 ] 
    
  2. 分配數組表達的左側。

  3. 擴大陣列到指定的增值經銷商:

    @current_engine = a[ 0 ] 
    engine_was = a[ 1 ]