ruby модуль _функция против включения модуля

Я понимаю, что в ruby ​​функции модуля могут быть доступны без смешивания модуля с помощью module_function, как показано здесь. Я вижу, насколько это полезно, так что вы можете использовать функцию, не смешивая модуль.

module MyModule
  def do_something
    puts "hello world"
  end
  module_function :do_something
end

Мой вопрос заключается в том, почему вы можете захотеть, чтобы функция была определена обоими этими способами.

Почему бы просто не

def MyModule.do_something

ИЛИ

def do_something

В каких случаях было бы полезно иметь функцию, доступную для смешивания или использования в качестве статического метода?

48
задан iconoclast 27 December 2015 в 18:23
поделиться