perl6: доступ к значениям в многомерной переменной - PullRequest
0 голосов
/ 04 мая 2018

Модуль Twitter Perl6 выдает многомерную переменную с твитами из поискового запроса. Этот код:

%tweets<statuses>[0]<metadata><iso_language_code>.say;
%tweets<statuses>[0]<created_at>.say;

печать:

es
Fri May 04 13:54:47 +0000 2018

Следующий код распечатывает значение твитов из поискового запроса «create_at».

for @(%tweets<statuses>) -> $tweet {
  $tweet<created_at>.say;
}

Есть ли лучший синтаксис для доступа к значениям переменной% твитов?

Спасибо!

1 Ответ

0 голосов
/ 04 мая 2018

Если вопрос заключается в том, существует ли более короткий синтаксис для индексации хеша с литеральными ключами, чем <...>, то нет, это так же мало, как и получается. В Perl 6 нет никакой связи между структурой хеш-данных и методами / атрибутами / свойствами объекта (в отличие от JavaScript, например, когда такого различия нет, поэтому . используется для обоих).

Однако существует множество способов избавиться от повторений и шаблонов. Например:

%tweets<statuses>[0]<metadata><iso_language_code>.say;
%tweets<statuses>[0]<created_at>.say;

Вместо этого можно написать:

given %tweets<statuses>[0] {
    .<metadata><iso_language_code>.say;
    .<created_at>.say;
}

Используется переменная темы $_. Для коротких, простых циклов, которые также могут быть использованы, например:

for @(%tweets<statuses>) {
    .<created_at>.say;
}
...