2017-03-07 77 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的方式。