![]() |
|
|
![]()
|
|
| fell |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 17.12.2008 Где: Санкт-Петербург Репутация: нет Всего: нет |
module Dep extend self some methods here class Some def hello; p 'hello';end end end что делает эта конструкция ? extend вообще добавляет из модуля методы. и делает их классовыми( модульными) методами. self у нас тут Dep, extend Dep получается ? А тут что ? |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Она делает методы экземпляра доступными для вызова как методы модуля.
Благодаря extend self, можно вызывать метод так: Dep.some_method(...) -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| fell |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 17.12.2008 Где: Санкт-Петербург Репутация: нет Всего: нет |
а почему не писать
def self.method end ? опять для простоты ? module << self не сработает ? |
|||
|
||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Ну так это же будет далеко не то же самое... Например, Array.send :include, Dep будет примешивать к классу Array методы экземпляра, т.е. Array.new.some_method А вообще попробуй поэкспериментировать сам: запусти irb и вперёд - пробовать разные варианты и на собственном опыте познавать их отличия. Это самый эффективный способ разобраться и запомнить отличия. Это сообщение отредактировал(а) source777 - 2.8.2010, 14:41 -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
![]()
|
| Правила форума "Ruby: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Ruby: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |