![]() |
|
|
![]()
|
|
| CPlusPlusFAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
Здравствуйте.
Скажите, можно ли написать свой аналог attr, attr_accessor? Ну например для массива:
Если так можно, то можно привести пример? Интересует не обязательно массив, а просто такой вид генерации методов. Это сообщение отредактировал(а) CPlusPlusFAN - 20.7.2010, 23:14 |
|||
|
||||
| CPlusPlusFAN |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
У меня появились 2 варианта:
и ещё один:
если честно, у меня идеи появились только что, после прочтения литературы по метапрограммированию. Может у кого есть варианты красивее? |
||||
|
|||||
| fell |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 17.12.2008 Где: Санкт-Петербург Репутация: нет Всего: нет |
не очень понятно, что он должен делать ? опишите подробно ...
а написать то можно все что угодно, attr_accessor это просто классовые макросы, которые конструируют 2 метода set и get. |
|||
|
||||
| CPlusPlusFAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 315 Регистрация: 1.11.2005 Где: Воронеж Репутация: нет Всего: нет |
Ну, к примеру, передаёшь ему символы имени массива и индекса и он генерит метод доступа к элементу внутреннего массива.
|
|||
|
||||
| fell |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 17.12.2008 Где: Санкт-Петербург Репутация: нет Всего: нет |
для массивов есть очень много всяких функций, в версии 1.9.2 вроде еще добавили. Вы посмотрите, может это уже есть в класса Array, в справочнике гляньте список функций.
А функция(макрос) attribute accessor, как следует из названия назначает(управляет) атрибуты класса. Если вам нужна обработка массивов это класс Array. Открываете класс и дописываете нужный вам функционал. Только открываете не исходники |
|||
|
||||
| source777 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 6 Всего: 56 |
Самый красивый вариант в данном случае не умножать сущности сверх меры, а attrByIndex - это вообще хз что, читабельность в десятки раз хуже, чем у оригинального кода, да ещё и конвенция по именованию нарушены. И нафига этому "макросу" передаётся имя параметра метода? Прям можно подумать, что ты - VBFAN... В Ruby нет разницы между
и
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
||||
|
|||||
![]()
|
| Правила форума "Ruby: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Ruby: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |