Ruby String类中是否有任何内置函数可以为我提供Ruby中字符串的所有前缀.就像是:
"ruby".all_prefixes => ["ruby","rub","ru","r"]
def all_prefixes search_string dup_string = search_string.dup return_list = [] while(dup_string.length != 0) return_list << dup_string.dup dup_string.chop! end return_list end
但我正在寻找更多的rubylike,更少的代码和神奇的东西.
注意:当然不用说original_string应保持不变.
解决方法
快速基准:
require 'fruity' string = 'ruby' compare do toro2k do string.size.times.collect { |i| string[0..i] } end marek_lipka do (0...(string.length)).map{ |i| string[0..i] } end jorg_w_mittag do string.chars.inject([[],'']) { |(res,memo),c| [res << memo += c,memo] }.first end jorg_w_mittag_2 do acc = '' string.chars.map {|c| acc += c } end stefan do Array.new(string.size) { |i| string[0..i] } end end
最终获胜者是:
Running each test 512 times. Test will take about 1 second. jorg_w_mittag_2 is faster than stefan by 19.999999999999996% ± 10.0% stefan is faster than marek_lipka by 10.000000000000009% ± 10.0% marek_lipka is faster than jorg_w_mittag by 10.000000000000009% ± 1.0% jorg_w_mittag is similar to toro2k