Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Переменная


Автор: Ampersand 10.10.2002, 21:51
Проблема такая - на Перле нужно определить, была ли инициализирована переменная, т.е. присваивалось ли ей какое-либо значение. Т.е. нужен аналог isSet() из PHP...
Заранее спасибо!

Автор: leonidp 7.11.2002, 22:09
Можь я не правильно понял.. Но кажется проще

Код

if($a) {
  #переменная существует
} else {
  #соответственно не существует
}

Автор: NightGoblin 27.11.2002, 14:19
Код

f (defined ($a)) {
    # для переменной определено значение
} else {
    # значение переменной - undef, следовательно скорее всего, не была
    # инициализирована
}

Автор: HalkaR 8.12.2002, 07:34
Единственное, НО.
Цитата
скорее всего
она действительно содержит undef, но большинство авторов книг советуют на это не слишком пологаться.

Автор: Dagger 8.12.2002, 21:37
2leonidp if($a){}else{}
Думаю, это самый правильный способ;)

Автор: HalkaR 8.12.2002, 22:03
Цитата
if($a){}else{}
Думаю, это самый правильный способ;)

Совсем не то. Если переменная инициализированна и ровна нулю, выдаст такаже как еслиб она была не инициализированна.

По моему самое верное решение в начале программы инициализировать переменную какаимнибудь левым значением или присвоить ей undef.

Автор: Dagger 8.12.2002, 22:10
Цитата(HalkaR @ 08.12.2002, 14:03)
Цитата
if($a){}else{}
Думаю, это самый правильный способ;)

Совсем не то. Если переменная инициализированна и ровна нулю, выдаст такаже как еслиб она была не инициализированна.

По моему самое верное решение в начале программы инициализировать переменную какаимнибудь левым значением или присвоить ей undef.

я всегда делаю my $bla_bla_bla;
все переменные инициализирую таким образом;).
На самом деле я сишник;) у нас если переменная не инициализирована, то компиллер даст по яйцам;)

Автор: NightGoblin 11.12.2002, 08:46
Цитата
На самом деле я сишник;) у нас если переменная не инициализирована, то компиллер даст по яйцам;)


Гы, вот это тоже правильно - написать в начале
Код

#!/usr/bin/perl -w

use strict;


и никаких проблем подобного рода не будет :)

Автор: Dagger 11.12.2002, 09:00
Цитата(NightGoblin @ 11.12.2002, 00:46)
Цитата
На самом деле я сишник;) у нас если переменная не инициализирована, то компиллер даст по яйцам;)


Гы, вот это тоже правильно - написать в начале
Код

#!/usr/bin/perl -w

use strict;


и никаких проблем подобного рода не будет :)


А что за модуль strict? обьясни, плиз, подбробнее.


Автор: NightGoblin 11.12.2002, 10:39
Цитата(Dagger @ 11.12.2002, 01:00)
А что за модуль strict? обьясни, плиз, подбробнее.

Это не модуль, это прагма... включает режим строгого синтаксиса - декларирование переменных, функций и т. д.

Автор: NightGoblin 11.12.2002, 10:40
2Dagger:

включаешь strict и с того момента начинаешь и от Perl'а получать по яйцам ;-)

Автор: HalkaR 12.12.2002, 00:18
Еще мона к строке адреса Перла -w дописать - чтоб уж совсем кривые проги писать неповадно было.

Автор: Dagger 14.12.2002, 10:44
Цитата(NightGoblin @ 11.12.2002, 02:40)
2Dagger:

включаешь strict и с того момента начинаешь и от Perl'а получать по яйцам ;-)

оффтопик:
:D все! смерть неинициализированным переменнм :)))) :D

Автор: NightGoblin 14.12.2002, 16:36
Цитата(HalkaR @ 11.12.2002, 16:18)
Еще мона к строке адреса Перла -w дописать - чтоб уж совсем кривые проги писать неповадно было.

:D ну да ))) я ж так и указал вроде :)

2Dagger:

;-)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)