2013-08-30 41 views
-1

我有一个地图,键(串)可以有一个非常易变的字符数,我想智能打印:红宝石相当打印字符串

MAP = { 
    "key1" => "value1", 
    "key2" => "value2", 
} 

将打印:

key1 -> value1 
key2 -> value2 

MAP = { 
    "key1" => "value1", 
    "key2" => "value2", 
    "key3_dam_it_you_are_a_big_one_indeed" => "value3", 
} 

将打印:

key1         -> value1 
key2         -> value2 
key3_dam_it_you_are_a_big_one_indeed -> value3 

他的想法是,key1和key2会根据key3的大小更改他们的打印行。

谢谢!

+0

,只要你想,为什么不去做呢? – sawa

+0

因为每次我想要一辆车,我都试图不重新实施车轮。这通常是语言内置的东西的类型。 – mors

+0

那么为什么不使用该内置函数呢? – sawa

回答

1

什么

class Hash 
    def nice_print 
    max_key_length = keys.map(&:length).max 
    each { |key, value| puts "#{key.ljust(max_key_length)} -> #{value}" } 
    end 
end 

和你打电话

MAP.nice_print 
+0

ljust像一个cham工作〜谢谢! – mors