Модули Ruby и расширяются сам

В том, какой ситуация является кодом:

module M
   extend self
   def greet
    puts "hello"
   end

end

более выгодный для использования говорят что-то как:

module M
   def self.greet
    puts "hello"
   end
end

В вершине каждый - метод экземпляра, расширяемый, и последний является просто методом класса, но при вызове любого метода, Вы имели бы к M.greet, правильно? Мне было просто любопытно, если кто-либо мог бы пролить некоторый свет на то, когда использовать один код по другому.Спасибо!

15
задан joeellis 28 July 2010 в 22:24
поделиться

2 ответа

Первый пример - это обычно способ, которым люди достигают функциональности module_function (когда они не знают о существовании этого метода).

A module_function является как методом экземпляра, так и методом класса. Во втором примере кода метод - это просто метод класса.

15
ответ дан 1 December 2019 в 02:18
поделиться

Это можно было бы сделать с вашим первым примером, но не со вторым:

include M
greet
10
ответ дан 1 December 2019 в 02:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: