Я хочу вернуть пустой массив , а не пустой .Как вернуть пустой массив/массив длиной 0 в perl?
У меня есть sub, который возвращает массив вещей. Я хочу быть в состоянии сделать это с ним:
my $count = scalar getArray();
Я сделал это так:
sub getArray {
if (!isGood()) {
return();
} else {
my @array = calculateSomehow();
return @array;
}
}
my $count = scalar getArray();
Я имел сярприз когда !isGood()
и $count
становится undef
, не 0
! После прочтения perlfaq4, я понимаю, что это происходит потому, что GetArray() вычисляется в скалярном контексте и, следовательно, список()
оценивается как скаляр и scalar(())
является undef
, а my @array; scalar(@array)
0.
Вопрос теперь становится: Как мне наиболее элегантно вернуть пустой массив , так что $count
is 0
, если !isGood()
? Я только придумал:
# This is kind of kludgy: Dereference an anonymous array ref. Really?
return @{[]};
или
# I use a temporary variable for this. Really?
my @empty;
return @empty;
Не существует каких-либо очиститель/более элегантные способы возвращающий массив длины 0 (пустой массива) или некоторые другой способ сделать scalar getArray()
оценить до 0
?
Вы обнаружили, что 'мой мой чистый пустяк' или более элегантный? – choroba
Спасибо @choroba - да, я знаю! –
подписчики всегда возвращают списки. – ysth