perl6:访问多维变量中的值

perl6: access values in a multidimensional variable

Perl6 推特模块给出了一个多维变量,其中包含来自搜索查询的推文。此代码:

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

打印:

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

以下代码打印来自搜索查询的推文的 'created_at' 值。

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

是否有更好的语法来访问变量 %tweets 的值?

谢谢!

如果问题是是否存在比 <...> 更短的使用文字键的散列索引语法,那么不,这是最短的。在 Perl 6 中,没有哈希数据结构与对象 methods/attributes/properties 的混淆(与 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;
}