shaks
@shaks

Как вызвать статический метод у модуля класса?

нубовый вопрос.. Допустим мы имеем
# tmp.rb
module FooModule
  def self.foo_method
    puts 'TestModule'
  end
end

class BarClass
  include FooModule
end


как видно в коде выше, У нас есть класс BarClass, который инклудит в себя модуль FooModule
Соответственно, у класса появляется статический метод foo_method
Почему у меня не получается к нему обратиться?
$ irb
2.4.1 :001 > require './tmp.rb'
 => true 
2.4.1 :002 > BarClass.foo_method
NoMethodError: undefined method `foo_method' for BarClass:Class
        from (irb):2
        from /home/shaks/.rvm/rubies/ruby-2.4.1/bin/irb:11:in `<main>'
2.4.1 :003 >
  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
@lebron32rus
Software Engineer
include — добавляет методы модуля объекту.
extend — вызывает include для синглтон-класса объекта.

Правильный вариант:
module FooModule
  def foo_method
    puts 'TestModule'
  end
end

class BarClass
  extend FooModule
end


Подробнее
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
iGooods.ru Санкт-Петербург
от 120 000 до 180 000 ₽
Enapter Санкт-Петербург
от 160 000 до 240 000 ₽