0
是否有紅寶石等同於JavaScript的一個表達式:紅寶石等同於JS
myHash[id] = myHash[id] || {};
試圖追加數組或哈希到現有的一個時,這通常被使用,但我們不知道,如果它是已經創建或者是第一次迭代。
是否有紅寶石等同於JavaScript的一個表達式:紅寶石等同於JS
myHash[id] = myHash[id] || {};
試圖追加數組或哈希到現有的一個時,這通常被使用,但我們不知道,如果它是已經創建或者是第一次迭代。
在Ruby中,這個代碼實際工作一樣的JavaScript:
myHash[id] = myHash[id] || {}
話雖這麼說,這樣做的更雄辯的方式是:
myHash[id] ||= {}
雖然這些是相同的:
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的方式。
不知道Ruby,但不會只是邏輯或工作?它返回一個布爾值還是第一個真值? – Carcigenicate
'myHash [id] || = {}'相當於 – engineersmnky
請不要使用「hi」,valedictions(「thanks!」)或簽名等稱呼。堆棧溢出不是一個討論列表,它是一個在線參考。而且,語法,拼寫和標點都很重要。 –