首页 > 解决方案 > Perl 6 中与 Python 中的星号表达式等效的是什么?

问题描述

在 Python 3 中,假设您开设了一门课程,并在学期末决定要放弃第一个和最后一个作业成绩,并且只取其余的平均分:

def drop_first_last(grades):
    first, *middle, last = grades 
    return avg(middle)

print drop_first_last([100,68,67,66,23]);

在 Perl 6 中:

sub drop_first_last(@grades) {
    my ($first, *@middle, $last) = @grades;
    return avg(@middle);
}

say drop_first_last(100,68,67,66,23);

导致错误“无法$last在可变参数后放置所需参数”。

那么,在 Perl 6 中,与 Python 中的星型表达式等效的表达式是什么?

标签: rakuvariadic

解决方案


Perl5:

sub drop_first_last { avg( @_[ 1 .. $#_-1 ] ) }     #this
sub drop_first_last { shift;pop;avg@_ }             #or this

Perl6:

sub drop_first_last { avg( @_[ 1 .. @_.end-1 ] ) }

推荐阅读