perl - "Statement modifier"哈希迭代?

标签 perl loops foreach syntax iterator

我发现自己想在 Perl (v5) 中使用语句修饰符形式的哈希迭代:

my %h = (...);
do_something($_[0], $_[1]) for each %h;  ### $_[0] => key, $_[1] => val

或者:

my %h = (...);
my @ary = %h;
do_something($_[0], $_[1]) for splice(@ary, 0, 2);

当然,这两种形式都不存在。只是好奇是否有任何工作支持使用 spliceeach 与语句修饰符形式的 for 一起使用?在 Perl 6 中或者通过向后移植 v5?

最佳答案

List::Util中有一些很棒的功能和 List::MoreUtils帮助解决此类情况。特别是看一下pairs:

use List::Util qw{pairs};

do_something($_->[0], $_->[1]) foreach pairs %h;

或者,如果您可以在空白上下文中接受 map :

use List::Util qw{pairmap};

pairmap { do_something($a, $b) } %h;

关于perl - "Statement modifier"哈希迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52242644/

相关文章:

linux - fork 后线程安全吗?

java循环内存和未完成任务的处理

用于变量名称的 R 循环以运行线性回归模型

php - 无法从mysql检索数据并显示

php - 如果 foreach 中存在行则不起作用

php - 循环内 PDO 语句的绑定(bind)参数

JSON 在 Perl 中编码/解码 utf8 字符串

regex - 哪些字符可以用作正则表达式分隔符?

perl - 如何在运行的 Perl session 中编译 Perl 脚本?

PHP:在除最后一个元素之外的每个元素后显示逗号。使用 'for' 语句而不使用 'implode/explode'