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 >
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
@lebron32rus
Software Engineer
include — добавляет методы модуля объекту.
extend — вызывает include для синглтон-класса объекта.

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

class BarClass
  extend FooModule
end


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

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

Войти через центр авторизации
Похожие вопросы
от 80 000 до 220 000 руб.
от 100 000 до 200 000 руб.
TalentTech Москва
от 200 000 до 300 000 руб.