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!”)或签名等称呼。堆栈溢出不是一个讨论列表,它是一个在线参考。而且,语法,拼写和标点都很重要。 –