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'寶石 –