0
我试图打印字符串和整数的散列红宝石采用以下格式:打印哈希与缩进各行
x = {"abc" => 12,"abcdef" => 44, "sryyy" => 5}
puts x
输出应该是这样的:
abc 12
abcdef 44
sryyy 5
我可以得到每个字符串的最大长度,然后根据这个缩进每一行,但有没有更简单的方法来做到这一点?或者有没有这样做的方法?
我试图打印字符串和整数的散列红宝石采用以下格式:打印哈希与缩进各行
x = {"abc" => 12,"abcdef" => 44, "sryyy" => 5}
puts x
输出应该是这样的:
abc 12
abcdef 44
sryyy 5
我可以得到每个字符串的最大长度,然后根据这个缩进每一行,但有没有更简单的方法来做到这一点?或者有没有这样做的方法?
给出这个例子。我想,找到最大长度,并使用sprintf的填充就足够了如简单的东西
def justified_printing_hash(h)
max_length = h.keys.max_by(&:length).length
h.each {|k,v| puts sprintf("%<key>#{max_length}s %<value>d",{key:k,value:v}) }
end
用途为
x = {"abc" => 12,"abcdef" => 44, "sryyy" => 5}
justified_printing_hash(x)
abc 12
abcdef 44
sryyy 5
#=> {"abc" => 12,"abcdef" => 44, "sryyy" => 5}
还是要小更新@engineersmnky你可以通过这个做到这一点:
x = {"abc" => 12,"abcdef" => 44, "sryyy" => 5}
x.each do |key, value|
p "#{key.rjust(x.keys.max_by(&:length).length)} #{value}"
end
> abc 12
> abcdef 44
> sryyy 5
我不明白;如果不知道密钥的最大长度,则无法知道缩进级别。 –
问题更新 –
看看'awesome_print'宝石 –