在一行代码中对数组进行连续连接操作



我想取一个链接列表,并使用交替连接将它们分开。

我有:

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>")
 => "1t2<br>3t4<br>5t6" 

是否有办法在单行中完成此操作?我知道我可以用Proc或block调用来做,但我希望用更简洁的方法。似乎总有一些ArrayEnumerable方法我还没有了解,但我还没有发现任何东西。

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

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

一行:

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

最新更新