0
controller_name, action = "page", "action"
在右側的每個對象分配給左邊的變量。
在此代碼:
controller_name, action = "page/action".split("/")
結果是相同的。可能這是一個愚蠢的問題,但我想知道Ruby是如何做到的?
controller_name, action = "page", "action"
在右側的每個對象分配給左邊的變量。
在此代碼:
controller_name, action = "page/action".split("/")
結果是相同的。可能這是一個愚蠢的問題,但我想知道Ruby是如何做到的?
"page/action".split("/")
在Ruby中創建數組。
然後controller_name, action = "page/action".split("/")
它導致並行分配,由splatting數組,由String#split
方法創建。
下面是所有處理的中間步驟/對你採取紅寶石本身:
controller_name, action = "page/action".split("/")
↓
controller_name, action = ['page','action'] # <- intermediate
↓
controller_name, action = *['page','action'] # <- intermediate
↓
controller_name, action = 'page','action' # final assignment happened now.
可以崩潰和使用Ruby的平行分配擴大陣列運營商。如果最後一個左值前面有一個星號,則所有剩餘的右值將被收集並作爲數組分配給該左值。類似的,如果最後一個右值是一個數組,你可以在它前加一個星號,它可以有效地將它擴展爲它的組成值。 (如果右值只有右值---數組將自動擴展,這不是必需的。)
瞭解,謝謝你的解釋。 –