Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переменная, была ли инициализирована? 
:(
    Опции темы
Ampersand
Дата 10.10.2002, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблема такая - на Перле нужно определить, была ли инициализирована переменная, т.е. присваивалось ли ей какое-либо значение. Т.е. нужен аналог isSet() из PHP...
Заранее спасибо!
PM MAIL WWW   Вверх
leonidp
Дата 7.11.2002, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Можь я не правильно понял.. Но кажется проще

Код

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

PM MAIL WWW   Вверх
NightGoblin
Дата 27.11.2002, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1021
Регистрация: 24.11.2002
Где: 127.0.0.1

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



Код

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


Это сообщение отредактировал(а) korob2001 - 10.3.2005, 19:54


--------------------
Kernel panic: /dev/null overflow!
GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y?
B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981
PM MAIL WWW ICQ   Вверх
HalkaR
Дата 8.12.2002, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

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



Единственное, НО.
Цитата
скорее всего
она действительно содержит undef, но большинство авторов книг советуют на это не слишком пологаться.
PM MAIL   Вверх
Dagger
Дата 8.12.2002, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 377
Регистрация: 4.9.2002
Где: Киев

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



2leonidp if($a){}else{}
Думаю, это самый правильный способ;)
PM MAIL WWW Skype   Вверх
HalkaR
Дата 8.12.2002, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

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



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

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

По моему самое верное решение в начале программы инициализировать переменную какаимнибудь левым значением или присвоить ей undef.
PM MAIL   Вверх
Dagger
Дата 8.12.2002, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 377
Регистрация: 4.9.2002
Где: Киев

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



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

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

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

я всегда делаю my $bla_bla_bla;
все переменные инициализирую таким образом;).
На самом деле я сишник;) у нас если переменная не инициализирована, то компиллер даст по яйцам;)
PM MAIL WWW Skype   Вверх
NightGoblin
  Дата 11.12.2002, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1021
Регистрация: 24.11.2002
Где: 127.0.0.1

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



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


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

#!/usr/bin/perl -w

use strict;


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


--------------------
Kernel panic: /dev/null overflow!
GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y?
B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981
PM MAIL WWW ICQ   Вверх
Dagger
Дата 11.12.2002, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 377
Регистрация: 4.9.2002
Где: Киев

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



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


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

#!/usr/bin/perl -w

use strict;


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


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


PM MAIL WWW Skype   Вверх
NightGoblin
Дата 11.12.2002, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1021
Регистрация: 24.11.2002
Где: 127.0.0.1

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



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

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


--------------------
Kernel panic: /dev/null overflow!
GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y?
B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981
PM MAIL WWW ICQ   Вверх
NightGoblin
Дата 11.12.2002, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1021
Регистрация: 24.11.2002
Где: 127.0.0.1

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



2Dagger:

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


--------------------
Kernel panic: /dev/null overflow!
GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y?
B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981
PM MAIL WWW ICQ   Вверх
HalkaR
Дата 12.12.2002, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

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



Еще мона к строке адреса Перла -w дописать - чтоб уж совсем кривые проги писать неповадно было.
PM MAIL   Вверх
Dagger
Дата 14.12.2002, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 377
Регистрация: 4.9.2002
Где: Киев

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



Цитата(NightGoblin @ 11.12.2002, 02:40)
2Dagger:

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

оффтопик:
:D все! смерть неинициализированным переменнм :)))) :D
PM MAIL WWW Skype   Вверх
NightGoblin
Дата 14.12.2002, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1021
Регистрация: 24.11.2002
Где: 127.0.0.1

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



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

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

2Dagger:

;-)


--------------------
Kernel panic: /dev/null overflow!
GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y?
B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

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


 




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


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

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