#perl
#perl
Вопрос:
Даже не уверен, использовал ли я правильную терминологию.. Это были переданные данные.
$bug = bless({
'bug_id' => '25252',
'flag_types' => [
bless({
'name' => 'name1',
'flags' => [bless({
'id' => 488052,
}, 'Bugzilla::Flag')],
}, 'Bugzilla::FlagType'),
bless({
'name' => 'name2',
'flags' => [bless({
'id' => 488053,
}, 'Bugzilla::Flag')],
}, 'Bugzilla::FlagType'),
],
}, 'Bugzilla::Bug');
Почему я могу ссылаться name
с фигурными скобками или без них, но не на flags
?
$_->flags
выдает ошибку
Can't locate object method "flags"
my @isCrash = map {
print Dumper($_->name);
print Dumper($_->{name});
print Dumper($_->flags); # errors
print Dumper($_->{flags};
} @{ $bug->{flag_types} };
Я понимаю, что flags
это не метод, но почему я не получаю такую ошибку name
?
Ответ №1:
Ваш массив содержит объекты типа Bugzilla::FlagType, у них есть метод name
, который «Возвращает имя flagtype».
Комментарии:
1. поэтому, когда я это делаю
$_->name
, он выполняет метод, не имея()
в конце? Интересно ..!2. @PuffedRiceCrackers Perl
()
в большинстве случаев не требует круглых скобок для вызовов функций или методов. Если вы передаете аргументы в вызов метода, вы должны использовать их, но не для пустых списков аргументов.