![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| scion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 13.5.2009 Репутация: нет Всего: нет |
в функцию предаются переменные: $variable1, $variable2 ... etc
как в функции проверить установлено ли им в программе значение? например: $one=1 передаём в функцию: check($one,$two...) { ... } переменная $two не установлена. надо что бы функция ругнулась. |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
scion, если я верно понимаю словосочетание "установлено значение", то решить Вашу задачу невозможно, т.к. неинициализированная переменная имеет значение undef, которое можно присвоить переменной в любое удобное время.
Пример
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| scion |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 13.5.2009 Репутация: нет Всего: нет |
fnx за undef... совсем забыл... т. е. если я правильно понял то так: !/usr/bin/perl sub CheckVaribles { foreach $_ (@_){ $i++; if ($_ eq undef) { print "\n: ",$i," not assigned\n"; } } } $i=0; $some_variable="test"; ##$some_variable2="teste"; $some_variable3="0"; CheckVaribles($some_variable,$some_variable2,$some_variable3); Это нормальный способ. или есть решения лучше? Добавлено через 10 минут и 54 секунды sub CheckVaribles { как мне от сюда вытащить не значение передаваемых параметров!!! а имя переменных? которые содержат передаваемые параметры т.е. $some_variable или $some_variable2 } CheckVaribles($some_variable,$some_variable2,$some_variable3); Это сообщение отредактировал(а) scion - 15.6.2009, 15:43 |
||||
|
|||||
| scion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 13.5.2009 Репутация: нет Всего: нет |
я конечно придумал... но останусь ли я жив после того как это кто-нибудь увидит....
я придумал засунуть все имена переменных в масив и передать в функцию в качестве нулевого параметра, а значения начиная с первого и внутни функции из распределить... в узнать какая из них undef и вывести её... |
|||
|
||||
| KSURi |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
eq undef - неверное сравнение, для этого есть функция defined.
$_ можно явно не указывать в циклах, на то она переменная по-умолчанию.
Имя переданной переменной вытащить не получится, только если не передавать аргументы в виде хэша или ссылки на него (использовать ключ в кач-ве имени переменной). -------------------- Died at Life.pl line 21 |
|||
|
||||
| scion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 13.5.2009 Репутация: нет Всего: нет |
народ говори что как-то можно получить аргументы функции как строку...
|
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
scion, как вариант, можно попробовать использовать модуль Devel::ArgNames.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| scion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 13.5.2009 Репутация: нет Всего: нет |
спасибо. |
|||
|
||||
| scion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 13.5.2009 Репутация: нет Всего: нет |
кто-нибудь использовал
Devel::ArgNames ??? а то он у меня матерится... =( Not nested deeply enough at /usr/local/share/perl/5.10.0/Devel/ArgNames.pm line 19 |
|||
|
||||
| scion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 13.5.2009 Репутация: нет Всего: нет |
всё решил. всем спасибо. вопросов по теме больше нет. |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |