首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Perl中( $test ) =(@test)和$test=@test之间有什么区别?

在Perl中( $test ) =(@test)和$test=@test之间有什么区别?
EN

Stack Overflow用户
提问于 2016-05-31 10:05:03
回答 1查看 192关注 0票数 6
代码语言:javascript
复制
($test) = (@test);
$test = @test;

在变量周围有一个括号,它访问数组的第一个元素。我找不到数组周围的括号的任何信息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-31 10:08:47

($test) = (@test);

这会将@test中的值分配给只包含$test的变量列表。因此,$test将包含@test的第一个元素。这叫做列表上下文。您还可以省略@test周围的括号。

代码语言:javascript
复制
my @test = ('a', 'b');
my ($test) = @test;    # 'a'

这也是非常常用的用于将函数的参数赋值给变量。下面将为函数分配前三个参数,并忽略后面的任何其他参数。

代码语言:javascript
复制
sub foo {
    my ($self, $foo, $bar) = @_;

    # ...
}

您还可以跳过中间的元素。这也是有效的。bar值不会在这里分配。

代码语言:javascript
复制
my @foo = qw(foo bar baz);
(my $foo, undef, my $baz) = @foo;

$test = @test;

这迫使@test进入标量上下文。标量上下文中的数组返回元素数,因此$test将成为一个整数。

代码语言:javascript
复制
my @test = ('a', 'b');
my $test = @test;      # 2

您可以在perldata中阅读更多关于上下文的内容。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37542674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档