Chinaunix

标题: 《Intermediate Perl》中一段CODE求教!【解决】 [打印本页]

作者: windows.li    时间: 2008-06-11 00:45
标题: 《Intermediate Perl》中一段CODE求教!【解决】
谁能帮讲讲这段CODE?先谢过~------该CODE来自Intermediate Perl
my @input_numbers = (1, 2, 4, 8, 16, 32, 64);

my @odd_digit_sum = grep digit_sum_is_odd($_), @input_numbers;

sub digit_sum_is_odd {

        my $input = shift;
                          
        my @digits = split //, $input;  # Assume no nondigit characters

        my $sum;
   
        $sum += $_ for @digits;
        
        return $sum % 2;
}
print join "\n",@odd_digit_sum;



[ 本帖最后由 windows.li 于 2008-6-11 10:18 编辑 ]
作者: windows.li    时间: 2008-06-11 09:49
my @input_numbers = (1, 2, 4, 8, 16, 32, 64);

my @odd_digit_sum = grep digit_sum_is_odd($_), @input_numbers;


我是这样理解的:判断digit_sum_is_odd($_), 若它为真,则返回$_组成的列表。
那么:默认依次判断digit_sum_is_odd(1), digit_sum_is_odd(2), digit_sum_is_odd(4)......
则:SUB中,my $input = shift;即依次处理shift 1, shift 2, shift 4......
------------貌似又不对,怪怪的.......请大家指教

[ 本帖最后由 windows.li 于 2008-6-11 09:52 编辑 ]
作者: windows.li    时间: 2008-06-11 10:18
不要打我,我明白了~~
split没有看清楚,现在明白了
作者: cobrawgl    时间: 2008-06-11 10:36
明白了就好
作者: waikontheroad    时间: 2008-06-12 13:22
研究研究,初来乍到,包涵一下




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2