Forum Webscript.Ru

Программирование => Perl => Тема начата: Phoinix от 06 Августа 2004, 15:31:55

Название: разные варианты использования undef
Отправлено: Phoinix от 06 Августа 2004, 15:31:55
Столкнулся с такой фичей ;) искал долго и упорно

при использовании функции undef применительно к массивам:

@array = undef и undef @array - выводят разные результаты, если в первом случае получаем массив с одним пустым элементом, то во втором - просто пустой массив...
Название: разные варианты использования undef
Отправлено: NeoNox от 06 Августа 2004, 15:40:20
Хмм... это по крайней мере логично. Это две разные вещи, в первом случае это пустое правое значение а во втором это функция.
perldoc -f undef
Название: разные варианты использования undef
Отправлено: Phoinix от 06 Августа 2004, 16:04:47
NeoNox

Это логично, но немного смутило, что в описании этого момента как раз и не было...

Проблема возникла в случае, когда массив используется повторно при одном объявлении:

my @array = (\'1\',\'2\',\'3\');
#... some function ...
@array = undef;
for (1..3) {
   push @array, $_
}
# @array = (\'\', \'1\', \'2\', \'3\') значение массива после цикла
#... some function ...


[OFF]Прошлось потратить некоторое время прежде чем нашел, откуда берется пустой элемент, сначала грешил на цикл (в моем варианте он более сложны), вконце когда "опустились руки" сделал просто shift @array; пока все-таки пошагово не прошел всу процедуру...[/OFF]