【发布时间】:2011-07-16 11:20:21
【问题描述】:
有没有一种快速简便的方法来通过数组查找满足某些测试的元素并从原始数组中删除这些元素?
例如我想要
@a = (1, 7, 6, 3, 8, 4);
@b = grep_filter { $_ > 5 } @a;
# now @b = (7, 6, 8)
# and @a = (1, 3, 4)
换句话说,我想将一个数组拆分为两个数组:匹配某个条件的数组和不匹配某个条件的数组。
【问题讨论】:
-
为什么?从 @a (
foreach (@a) { if( $_ > 5) { push @b, $_; } else { push @c, $_; } }) 创建 2 个数组很简单且易于阅读,为什么需要“部分就地”执行此操作?