Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > [Ищу]Модуль для добавления формальных параметров |
Автор: Logo 18.10.2009, 15:06 | ||
Чтобы можно было писать что-то вроде этого
Подобная вещь есть в http://search.cpan.org/~dmow/PlusPlus-1.23/PlusPlus.pm, но надо еще чтобы количество параметров проверяло, и другие опции этого модуля не нужны. |
Автор: DaemonSuw 18.10.2009, 20:54 | ||
+ добавить в mysub - прототипы? |
Автор: Logo 19.10.2009, 15:15 |
Нет, нужны именно формальные параметры, как в остальных языках программирования. |
Автор: arto 19.10.2009, 15:41 |
либо используйте hash, либо пишите свой фильтр. а для чего нужны формальные параметры? |
Автор: Logo 20.10.2009, 18:10 | ||
Хотел сначала узнать, нет ли готового решения, чтобы велосипед не изобретать.
Чтобы у переменных были понятные названия, а не $_[n], и не вытаскивать их руками. Чтобы значения по умолчанию необязательным параметрам не прописывать руками. Чтобы автоматически контролировать число параметров, передаваемых функции. Чтобы автоматически контролировать тип значения (на уровне ссылка на массив, хеш, sub и т.п.). |
Автор: korob2001 21.10.2009, 14:56 | ||||||
Можно передать хеш или же ссылку на него, вот и получишь именованные параметры.
Для того, что бы у параметров были значения по умолчанию, нужно заполнить этот хеш внутри функции.
Что бы контролировать число параметров воспользуйся прототипами:
Ну а что касается типов переменных, то Perl не относится к строго типизированным языкам. И определять хеш ты получил или массив, как правило не нужно, потому как нам известно что $ - скаляр, @ - массив, % - хеш. С ссылками дело обстоит несколько иначе, но для определения того, на что ссылается ссылка, можно воспользоваться ref. Вывод: Java - это Java, Perl - это Perl. Хочешь строгой типизации используй модули Inline или же пиши изначально на строго типизированном языке. |
Автор: Logo 21.10.2009, 22:15 | ||||
KSURi Этот модуль только для методов работает, для отдельных sub нет?
А как же он тогда работает ![]() korob2001 Спасибо, интересный метод.
Не совсем согласен, но спорить не буду. |
Автор: gcc 22.10.2009, 05:59 | ||
а зачем нужна типизация вообще? это только защита от извращенцев, не более того? вот я не давно видел программку ![]()
|
Автор: KSURi 22.10.2009, 09:21 |
Нет black hairy magic |
Автор: Logo 22.10.2009, 09:35 | ||
Ага, чуть со стула не упал, когда выдало
![]() ![]() ![]() А как бы это, по понятней? |
Автор: KSURi 22.10.2009, 13:23 |
http://www.catalyzed.org/2009/05/dawn-of-a-new-age-in-perl-how-develdeclare-extends-perls-syntax.html Там описан общий подход. |
Автор: gcc 24.3.2010, 15:16 |
кстате, тут http://blogs.perl.org/users/aevar_arnfjor_bjarmason/2010/02/moosexmethodsignatures-is-really-slow.html написано что этот модуль MooseX::Method::Signatures замедляет работу при выпонении, это так? там не написано правда где тестировали mod_perl или нет? |
Автор: mvsgt 27.3.2010, 01:03 |
MooseX:![]() Вообще для программирования на перл не "для себя" надо установить порог потребностей, начиная с которого переходить на другие языки. Того что над ТС - в перле нет. Есть в Java, C++ и так далее. Не так они страшны как кажется. |