在一行代码中对Array进行连续的连接操作

时间:2011-10-18 22:46:59

标签: ruby arrays

我想获取链接列表并使用交替连接拆分它们。

这就是我所拥有的:

ruby-1.9.2-p290 :011 > tmp = [1,2,3,4,5,6].map(&:to_s)
 => ["1", "2", "3", "4", "5", "6"] 
ruby-1.9.2-p290 :012 > tmp2 = []
 => [] 
ruby-1.9.2-p290 :013 > tmp.each_slice(2) {|a| tmp2 << a.join("\t")}
 => nil 
ruby-1.9.2-p290 :014 > tmp2.join("<br\>")
 => "1\t2<br>3\t4<br>5\t6" 

有没有办法在一行中完成这项工作?我知道我可以用Proc或阻止电话来做,但我希望能有更清洁的东西。似乎总有一些ArrayEnumerable方法我尚未了解,但我还没有找到任何东西。

3 个答案:

答案 0 :(得分:3)

您可以在map之后使用each_slice,而不是使用<<

[1,2,3,4,5,6].each_slice(2).map {|a| a.join("\t")}.join("<br\>")

答案 1 :(得分:2)

一个班轮:

[1,2,3,4,5,6].each_slice(2).map{|d| d.join("\t")}.join("<br/>")

答案 2 :(得分:0)

tmp = [1,2,3,4,5,6].map(&:to_s)
tmp.map { |i| i.to_i % 2 == 1 ? "#{i}\t" : "#{i}<br>" }.to_s