Ruby中的表达式是否等同于JavaScript:
myHash[id] = myHash[id] || {};
这通常在尝试将数组或散列附加到现有数组或散列时使用,但我们不知道它是否已经创建或是第一次迭代。
答案 0 :(得分:2)
在Ruby中,此代码实际上与JavaScript中的代码相同:
myHash[id] = myHash[id] || {}
话虽如此,更有说服力的方式是:
myHash[id] ||= {}
答案 1 :(得分: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方式。