Модули в рубине - PullRequest
1 голос
/ 14 июля 2010

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

p Hints::Designer.message


Почему это дает мне следующую ошибку ...?

неопределенный метод `message 'для подсказок :: Designer: Module (NoMethodError)

Ответы [ 3 ]

7 голосов
/ 14 июля 2010

Что вам нужно сделать, это определить сообщение как метод класса (не как метод экземпляра).Попробуйте:

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

puts Hints::Designer.message

Если вы хотите использовать методы экземпляра с модулем, вы должны расширить объект с помощью модуля и любых заданных ограничений (см. http://ruby -doc.org / core / classes/Module.html).

2 голосов
/ 14 июля 2010

Вы хотите использовать это:

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

То есть, сделать message методом "класса" (до того, как он стал методом экземпляра). Это кажется немного странным, но имейте в виду, что модули часто используются для создания смешанных классов, поэтому в этом контексте имеет смысл «экземпляр модуля».

1 голос
/ 14 июля 2010

использование p Hints::Designer.new.message

сообщение - это метод экземпляра, а не метод класса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...