【发布时间】:2013-04-10 05:04:25
【问题描述】:
我是 perl 初学者,我正在阅读 grep 函数来过滤列表。我遇到了以下程序。
#!/usr/bin/perl
use strict;
use warnings;
# initialize an array
my @array = qw(3 4 5 6 7 8 9);
# first syntax form:
my @subArray = grep { $_ & 1 } @array;
语句my @subArray = grep { $_ & 1 } @array; 在@array 中返回奇数。我不明白表达式($_ & 1) 是如何工作的。我在 Google 中搜索,但没有找到任何有用的链接。
这是一种特殊的运算符吗?
该 EXPR 是否还有其他变体?
提前致谢。
【问题讨论】:
-
仅供参考:这是一个非常简洁的技巧不应该在生产代码中使用,除非仅查找奇数元素的操作被基准测试为性能瓶颈。可读的实现。
-
@DVK 嗯,至于我的兴趣:这个技巧有用吗?
$_||=$val -
@loldop -
||=运算符是完全正确的惯用 Perl,而不是 hack。但是,使用$_而不是使用自文档命名的变量通常是代码编写不佳的标志,除非在非常短的map/grep块中使用。 -
@VARamesh,我想,你可以使用这个表达式:
($_%2)元素,在环模 2 中有余数 1 -
@DVK 感谢您提供信息。