Я получаю странное предупреждение об использовании кода Perl, и я надеюсь, что SO-brain может помочь.
Речь идет о коде:
sub add_observation {
my $self = shift;
my $observation = shift;
my $result = $observation->get_datum_result($self->{datum_name});
if(!(defined $result)) {
croak("Datum '$self->{datum_name}' not defined for this observation: ". Dumper($observation));
}
$self->{result} |= $result;
my $observation_time = $observation->get_time();
if($self->{result} == 0){
$self->set_start_time($observation_time);
}
if($result != 0) {
$self->set_end_time($observation_time);
$self->{end_threshold} = $observation_time->epoch() + $self->{timeout};
}
elsif($observation_time->epoch() > $self->{end_threshold}) {
$self->{complete} = 1;
}
return $self->{result};
}
Когда я запускаю свой код, я получите следующее предупреждение:
Use of uninitialized value in numeric gt (>) at Performance/BadSpan.pm line 67 (#1)
Строка 67 соответствует строке if ($ result! = 0) {
.
Моя проблема двоякая:
$ result
не определен, когда ему предшествует некоторый защитный код, который гарантирует, что он определен Я пытаюсь понять разницу между интерфейсами IQueryable, ICollection, IList и IDictionary что быстрее для основных операций, таких как итерация, индексирование, запросы и т. д.
какой класс, например Collection, List, Dictionary и т. д., будет хорошо запускать с этими интерфейсами и когда мы должны использовать этот класс. Основные преимущества использования этих классов перед другими.
Я пробовал читать другие сообщения с похожими вопросами, но ничего не ответил на мои вопросы. Спасибо за помощь.