gpt4 book ai didi

ruby - 是否有内置方法或 gem 可以按列打印 Ruby 数组?

转载 作者:太空宇宙 更新时间:2023-11-03 17:08:11 30 4
gpt4 key购买 nike

我有一个大型 Rub​​y 数组,我想按列打印,就像 Unix 的“ls”命令(至少在 OS X 上)的默认输出一样。是否有可以执行此操作的 gem 或内置方法?我知道 awesome_print gem 。它有一些性感的输出,但它似乎不提供专栏。

最佳答案

Enumerable#each_slice可能是你的 friend 。

$ irb
irb> a = (0..18).to_a
=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
irb> a.each_slice(5) { |row| puts row.map{|e| "%5d" % e}.join(" ") }
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18

如果您希望它们在列内排序,您可以使用 slice 和 Enumerable#zip

irb> cols = a.each_slice((a.size+2)/3).to_a
=> [[0, 1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12, 13], [14, 15, 16, 17, 18]]
irb> cols.first.zip( *cols[1..-1] ).each{|row| puts row.map{|e| e ? '%5d' % e : ' '}.join(" ") }
0 7 14
1 8 15
2 9 16
3 10 17
4 11 18
5 12
6 13

关于ruby - 是否有内置方法或 gem 可以按列打印 Ruby 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11108011/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com