2008-12-17 4 views
-2

mon rubis (sur rails) classe ressemble à:Ruby cours d'héritage ou tout autre problème

classe Foo def self.method1 uneAction fin

def self.method2 uneAction fin

def someAction // doSmth fin fin

des idées comment faire ce travail ou réaliser le même comportement d'une autre manière?

merci!

+0

Informations insuffisantes et peu claires – Chirantan

Répondre

2

Si some_action est appropriée en tant que méthode de classe, je ferais comme ceci:

class Foo 
    def self.method1 
    some_action 
    end 
    def self.some_action 
    # do stuff 
    end 
    def some_action 
    self.class.some_action 
    end 
end 

Si method1 est censé être une méthode pratique, je Je fais comme Hates.

class Foo 
    def self.method1 
    self.new.some_action 
    end 
    def some_action 
    # do stuff 
    end 
end 

La décision pour moi est généralement si some_action est plus d'une méthode utilitaire (comme générer une clé aléatoire, auquel cas je choisirais la première forme), ou si elle est un point d'entrée à quelque chose de plus complexe (Comme un analyseur, auquel cas je choisirais le second formulaire).

1

Vous ne pouvez pas appeler une méthode d'instance à partir d'une méthode de classe, sans une instance réelle de la classe elle-même. Vous pouvez le faire en tant que tel:

class Foo 

    def self.method1 
     myFoo = Foo.new 
     myFoo.someAction 
    end 

    def someAction 
     //doSmth 
    end 

end 
+0

merci pour la réponse! Cependant, comme someAction est plutôt une aide, je ne voulais pas faire une nouvelle instance pour cela ... et puis une idée géniale m'a frappé. je viens de le définir à côté du clas :)) ah, stupide moi:/ – Mantas

+0

Ne vaut pas un vote vers le bas, mais vous ne devriez pas utiliser le nom de classe classes dans une méthode. 'myFoo = new' fonctionnera. –

Questions connexes