2

Est-ce la bonne façon d'appeler une méthode Instance à partir d'une méthode de classe? Ici, l'instance_var est passé avec l'objet Name. Je veux invoquer func1 de l'objet instance_var passé à la méthode de classe.Appel de méthodes d'instance à partir de méthodes Class dans ruby ​​

j'ai écrit ceci:

Class Name 
    def initialize 
     @name 
    end 
    def func1(value) 
     puts value 
    end 
    def self.func2(instance_var,val) 
     instance_var.func1(val) 
    end 
end 
+1

Pourquoi auriez-vous besoin de cela? Mais oui, ce serait le chemin à parcourir, où instance_var est une instance de la classe Name –

+0

Ça devrait marcher. –

+0

J'ai essayé, mais la valeur n'a pas été imprimée. – user1568617

Répondre

3

Comment appelez-vous func2?

Votre code a une petite erreur. Vous avez écrit Class au lieu de class. Avec Class vous obtenez une erreur de syntaxe.

Ce code fonctionne:

class Name 
    def func1(value) 
     puts value 
    end 
    def self.func2(instance_var,val) 
     instance_var.func1(val) 
    end 
end 

x = Name.new 
Name.func2(x, 12)  #12 

#or 
Name.func2(Name.new, 12) #12 

Votre

def initialize 
     @name 
    end 

va créer une variable vide @name. Il n'aura jamais de valeur. Pour attribuer une valeur, vous avez besoin:

class Name 
    def initialize (var) 
     @name = var 
    end 
end 

x = Name.new(:x)