解决方法
Perl中的各种运算符是上下文敏感的,并且在列表和标量上下文中产生不同的结果.
例如:
my(@array) = (1,2,4,8,16); my($first) = @array; my(@copy1) = @array; my @copy2 = @array; my $count = @array; print "array: @array\n"; print "first: $first\n"; print "copy1: @copy1\n"; print "copy2: @copy2\n"; print "count: $count\n";
输出:
array: 1 2 4 8 16 first: 1 copy1: 1 2 4 8 16 copy2: 1 2 4 8 16 count: 5
现在:
> $first包含1(数组的第一个元素),因为my($first)中的括号提供了一个数组上下文,但$first中只有一个值的空间.
> @ copy1和@ copy2都包含@array的副本,
>和$count包含5,因为它是标量上下文,@ array在标量上下文中计算数组中元素的数量.
也可以构建更详细的例子(结果是读者的练习):
my($item1,$item2,@rest) = @array; my(@copy3,@copy4) = @array,@array;
我所知道的其他语言中的列表和标量上下文没有直接并行.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。