Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание новых языковых конструкций, средствами самого языка 
:(
    Опции темы
 
это
хорошо [ 18 ]  [64.29%]
плохо [ 10 ]  [35.71%]
Всего проголосовавших: 28
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
k0rvin
Дата 2.5.2010, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(gcc @ 2.5.2010,  12:08)
вот например сделали http://search.cpan.org/search?query=Moose+Meta&mode=all много всего

атрибуты понравились
Код

    package MyClass;

    use Moose;
    use MooseX::MethodAttributes;

    sub foo : Bar Baz('corge') { ... }

    my $attrs = MyClass->meta->get_method('foo')->attributes; # ["Bar", "Baz('corge')"]


можно увидеть какой метод с каким атрибутом в прогармме чтобы его вызвать, т.е. тут метод foo, атрибут Bar и Baz с corge

зачем? покажите практическую пользу

вот, допустим, есть у меня метод
Код

sub foo : Bar Baz('corge') { ... }

узнал я его аттрибуты:
Код

my $attrs = MyClass->meta->get_method('foo')->attributes; # ["Bar", "Baz('corge')"]

дальше-то что? что мне с ними делать, с этими аттрибутами?


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Logo
Дата 2.5.2010, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: нет
Всего: 10



k0rvin
Атрибуты к функциям - это такая фитча, есть в perl, насчет остальных языков не знаю.
Бывает полезно, например веб-фреймворк cataslyst использует атрибуты для методов контроллера, чтобы определить, к какому урлу привязан метод. Напоминает конфиги веб сервера.
Код

  package MyApp::Controller::Foo;
  sub bar : Local   {} # site.ru/foo/bar/*
  sub baz : Global {} # site.ru/baz/*
  sub some : Path('one/two') {} # site.ru/foo/one/two/*
  sub some2 : LocalRegex('^widget(\d+)$') {} # site.ru/foo/widget123 
  sub bar2 : Local :Args(0)  {} #  site.ru/foo/bar2


Алсо, есть несколько встроенных атрибутов.
PM MAIL   Вверх
k0rvin
Дата 3.5.2010, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



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


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 24 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.