2017-03-07 101 views
0

是否有紅寶石等同於JavaScript的一個表達式:紅寶石等同於JS

myHash[id] = myHash[id] || {}; 

試圖追加數組或哈希到現有的一個時,這通常被使用,但我們不知道,如果它是已經創建或者是第一次迭代。

+0

不知道Ruby,但不會只是邏輯或工作?它返回一個布爾值還是第一個真值? – Carcigenicate

+2

'myHash [id] || = {}'相當於 – engineersmnky

+0

請不要使用「hi」,valedictions(「thanks!」)或簽名等稱呼。堆棧溢出不是一個討論列表,它是一個在線參考。而且,語法,拼寫和標點都很重要。 –

回答

2

在Ruby中,這個代碼實際工作一樣的JavaScript:

myHash[id] = myHash[id] || {} 

話雖這麼說,這樣做的更雄辯的方式是:

myHash[id] ||= {} 
0

雖然這些是相同的:

my_hash[:id] = my_hash[:id] || {} 
my_hash[:id] ||= {} 

您會發現此內容有用:

require 'fruity' 

my_hash = {} 

compare do 
    test1 { my_hash[:id] = my_hash[:id] || {} } 
    test2 { my_hash[:id] ||= {} } 
end 

# >> Running each test 32768 times. Test will take about 1 second. 
# >> test2 is faster than test1 by 2x ± 0.1 

兩者之間,第二個,test2,是慣用的Ruby,所以,雖然速度的差別很小,但它加起來。這也是Ruby的方式。