![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: 3 Всего: 10 |
Чтобы можно было писать что-то вроде этого
Подобная вещь есть в PlusPlus, но надо еще чтобы количество параметров проверяло, и другие опции этого модуля не нужны. |
|||
|
||||
DaemonSuw |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 11.3.2008 Репутация: 3 Всего: 3 |
+ добавить в mysub - прототипы? |
|||
|
||||
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: 3 Всего: 10 |
Нет, нужны именно формальные параметры, как в остальных языках программирования.
|
|||
|
||||
arto |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
либо используйте hash, либо пишите свой фильтр.
а для чего нужны формальные параметры? |
|||
|
||||
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: 3 Всего: 10 |
Хотел сначала узнать, нет ли готового решения, чтобы велосипед не изобретать.
Чтобы у переменных были понятные названия, а не $_[n], и не вытаскивать их руками. Чтобы значения по умолчанию необязательным параметрам не прописывать руками. Чтобы автоматически контролировать число параметров, передаваемых функции. Чтобы автоматически контролировать тип значения (на уровне ссылка на массив, хеш, sub и т.п.). |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
MooseX::Method::Signatures предоставляет эти возможности. И еще много других, которые могут показаться лишними. Может проще другой язык выбрать? -------------------- Died at Life.pl line 21 |
|||
|
||||
korob2001 |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Можно передать хеш или же ссылку на него, вот и получишь именованные параметры.
Для того, что бы у параметров были значения по умолчанию, нужно заполнить этот хеш внутри функции.
Что бы контролировать число параметров воспользуйся прототипами:
Ну а что касается типов переменных, то Perl не относится к строго типизированным языкам. И определять хеш ты получил или массив, как правило не нужно, потому как нам известно что $ - скаляр, @ - массив, % - хеш. С ссылками дело обстоит несколько иначе, но для определения того, на что ссылается ссылка, можно воспользоваться ref. Вывод: Java - это Java, Perl - это Perl. Хочешь строгой типизации используй модули Inline или же пиши изначально на строго типизированном языке. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||||
|
|||||||
Logo |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: 3 Всего: 10 |
KSURi
Этот модуль только для методов работает, для отдельных sub нет?
А как же он тогда работает ![]() korob2001 Спасибо, интересный метод.
Не совсем согласен, но спорить не буду. |
||||
|
|||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
а зачем нужна типизация вообще?
это только защита от извращенцев, не более того? вот я не давно видел программку ![]()
Это сообщение отредактировал(а) gcc - 22.10.2009, 06:03 |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Нет black hairy magic Это сообщение отредактировал(а) KSURi - 22.10.2009, 09:21 -------------------- Died at Life.pl line 21 |
|||
|
||||
Logo |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 694 Регистрация: 22.7.2008 Репутация: 3 Всего: 10 |
Ага, чуть со стула не упал, когда выдало
![]() ![]() ![]() А как бы это, по понятней? |
|||
|
||||
KSURi |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
-------------------- Died at Life.pl line 21 |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
кстате, тут http://blogs.perl.org/users/aevar_arnfjor_...eally-slow.html написано что этот модуль MooseX::Method::Signatures замедляет работу при выпонении, это так? там не написано правда где тестировали mod_perl или нет?
|
|||
|
||||
mvsgt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 27.3.2009 Репутация: 1 Всего: 1 |
MooseX:
![]() Вообще для программирования на перл не "для себя" надо установить порог потребностей, начиная с которого переходить на другие языки. Того что над ТС - в перле нет. Есть в Java, C++ и так далее. Не так они страшны как кажется. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |