2010-07-14 4 views
1
 

module Hints 
module Designer 
    def message 
    "Hello, World!" 
    end 
end 
end 

p Hints::Designer.message 

 

Pourquoi cela me donne l'erreur suivante ...?Modules en ruby ​​

méthode non définie message » pour DESIGNER Conseils: Module (NoMethodError)

Répondre

7

Ce que vous devez faire est de définir un message comme une méthode de classe (et non comme une méthode d'instance). Essayez:

module Hints 
module Designer 
    def self.message 
    "Hello, World!" 
    end 
end 
end 

puts Hints::Designer.message 

Si vous souhaitez utiliser des méthodes d'instance avec un module, vous devez étendre un objet à l'aide du module et des contraintes données (voir http://ruby-doc.org/core/classes/Module.html).

+0

cela fonctionne ... bon .. thnx aloadz ... –

1

utilisation p Hints::Designer.new.message

un message

est une méthode d'instance et non une méthode de classe

+0

toujours eu la même erreur en faisant cela ... :( –

+0

sry, cela ne fonctionne que si 'designer' est une classe, je n'ai pas lu le texte entier soigneusement, mes yeux ont vu ce qu'ils étaient habitués à voir ... http://codepad.org/AZ5TaShz – clyfe

2

Vous voulez utiliser:

module Hints 
module Designer 
    def self.message 
    "Hello, World!" 
    end 
end 
end 

C'est, faire message une méthode "classe" (avant qu'il ne soit une méthode d'instance). Cela semble un peu étrange, mais gardez à l'esprit que les modules sont souvent utilisés pour créer des classes mixin, donc une "instance d'un module" a du sens dans ce contexte.