我发现自己想在 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);
当然,这两种形式都不存在。只是好奇是否有任何工作支持使用 splice
或 each
与语句修饰符形式的 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/