2010-02-22 7 views
0

aucune idée comment je peux afficher en-têtes en utilisant% pour le formatage? Je ne fait rien dans la méthode de classe, mais fonctionne bien dans méthode d'instance% mise en forme de chaîne ne fonctionne pas dans les méthodes de classe? (ruby)

class Stats 
attr_accessor :type, :count; 
def initialize type 
    @type = type 
    @count = 0 
end 


def self.display 
    "%s %4s " % ["header1",'header2'] 
    #puts 'headers' 
    ObjectSpace.each_object(Stats) { |o| 
    puts o 
    } 
end 


def to_s 
    "%-9s %4d " % [@type, @count] 
end 
end 

videos = Stats.new 'Videos' 
videos.count = 3 
article = Stats.new 'Article' 
webinars = Stats.new 'Webinars' 

Stats.display 

Répondre

2

Vous n'êtes pas imprimer le résultat de l'appel % dans self.display, ce qui est la raison pour laquelle vous ne voyez pas les en-têtes. Essayez de faire ce qui suit à la place:

def self.display 
    puts "%s %4s " % ["header1", "header2"] 

    ObjectSpace.each_object(Stats) {|o| puts o } 
end 

Vous pouvez également utiliser printf, qui fait la mise en forme et l'impression:

+0

@Phil Ross: quelle est l'émoticône pour rougir? :-) Je vous remercie – Radek

Questions connexes