| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Ruby: Общие вопросы > Синтаксис языка Ruby, extends, непонятные моменты |
| Автор: fell 29.7.2010, 10:01 |
module Dep extend self some methods here class Some def hello; p 'hello';end end end что делает эта конструкция ? extend вообще добавляет из модуля методы. и делает их классовыми( модульными) методами. self у нас тут Dep, extend Dep получается ? А тут что ? |
| Автор: source777 31.7.2010, 17:23 | ||
Она делает методы экземпляра доступными для вызова как методы модуля.
Благодаря extend self, можно вызывать метод так: Dep.some_method(...) |
| Автор: fell 31.7.2010, 19:14 |
| а почему не писать def self.method end ? опять для простоты ? module << self не сработает ? |
| Автор: source777 2.8.2010, 14:36 |
Ну так это же будет далеко не то же самое... Например, Array.send :include, Dep будет примешивать к классу Array методы экземпляра, т.е. Array.new.some_method А вообще попробуй поэкспериментировать сам: запусти irb и вперёд - пробовать разные варианты и на собственном опыте познавать их отличия. Это самый эффективный способ разобраться и запомнить отличия. |