How to improve code that quotes all array elements with `'` and returns a string containing all those quoted and comma-separated elements?
我使用的是Rails 3.2.2,我想用
1 2 | ['a', 'b', 'c'].collect {|x|"'#{x}'"}.join(",") # =>"'a', 'b', 'c'" |
但我认为我可以改进上面的代码(如果存在的话,也许可以使用一个我不知道的Ruby方法)。有可能吗?
我用
1 | "'#{%w{a b c}.join("', '")}'" |
。
以下是扩展版本:
1 2 3 | ' # Starting quote %w{a b c}.join("', '") # Join array with ', ' delimiter that would give a', 'b', 'c ' # Closing quote |
您可以将
1 | %w(a b c).map {|x|"'#{x}'"} * ', ' |
看起来这个版本和原始版本没有性能差异,但是sigurd的版本性能更好:
1 2 3 | Original 3.620000 0.000000 3.620000 ( 3.632081) This 3.640000 0.000000 3.640000 ( 3.651763) Sigurd's 2.300000 0.000000 2.300000 ( 2.303195) |
号
基准代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | require 'benchmark' n = 1000000 Benchmark.bm do |x| x.report("Original") { n.times do ['a', 'b', 'c'].collect {|x|"'#{x}'"}.join(",") end} x.report("This") { n.times do %w(a b c).map {|x|"'#{x}'"} * ', ' end} x.report("Sigurd's") { n.times do "'#{%w{a b c}.join("', '")}'" end} end |