Pri*_*ain 21 ruby ruby-on-rails
我很想知道[]和Array.new以及{}和Hash.new之间的更多差异
我对它运行相同的基准测试,看起来短线是赢家
require 'benchmark'
many = 500000
Benchmark.bm do |b|
b.report("[] \t") {many.times { [].object_id }}
b.report("Array.new \t") { many.times { Array.new.object_id }}
b.report("{} \t") {many.times { {}.object_id }}
b.report("Hash.new\t") { many.times { Hash.new.object_id }}
end
user system total real
[] 0.080000 0.000000 0.080000 ( 0.079287)
Array.new 0.180000 0.000000 0.180000 ( 0.177105)
{} 0.080000 0.000000 0.080000 ( 0.079467)
Hash.new 0.260000 0.000000 0.260000 ( 0.264796)
Run Code Online (Sandbox Code Playgroud)
我个人喜欢使用速记的[]和{},代码看起来很酷且可读.
任何其他指针它们之间有什么区别?场景背后发生了什么使它变得如此之好,并建议何时使用哪个?
我找到了这个链接,但希望获得更多信息.
干杯.
罗伯特已经提到了默认值Hash.new
您还可以将完整的“默认”值与以下块变体一起使用Hash.new:
x = Hash.new { |hash, key|
hash[key] = key * 2
}
p x #-> {}
p x[1] #-> 2
p x #-> {1=>2}
Run Code Online (Sandbox Code Playgroud)
Array.new 也可用于获取默认值:
p Array.new(5, :a) #-> [:a, :a, :a, :a, :a]
Run Code Online (Sandbox Code Playgroud)