如何从Perl中返回数组的函数中获取第一项?

Eli*_*Eli 5 perl

我有一个函数返回一个数组,我想从该数组中得到第一个项目,而不是为数组声明一个变量.基本上,它应该是这样的:

functionReturningArray()[1]

除此之外不起作用.

我真的不想浪费空间来声明整个阵列,因为我不需要它,而且我宁愿不浪费额外的代码行.无论如何要在一行中做到这一点?

Cha*_*ens 12

my $item = (function_returning_list())[0];
Run Code Online (Sandbox Code Playgroud)

函数不能返回数组,它们可以返回数组的内容(即列表).列表从索引开始0,因此函数返回的第一项是(func)[0].你也可以说

my ($item) = function_returning_list();
Run Code Online (Sandbox Code Playgroud)

这将function_returning_list放入列表上下文并对左侧列表中的变量进行赋值(按顺序).

重要的是要注意到这一点

sub function_returning_list {
    return ("a", "b", "c")
}

my $item = function_returning_list();
Run Code Online (Sandbox Code Playgroud)

可能不会做你期望的.该$item变量将被分配"c".这是因为在标量上下文中没有列表这样的东西.相反,您在标量上下文中有逗号运算符,并在void上下文中计算左手表达式,丢弃结果,然后在标量上下文中计算右侧.

我调用一个序列(而不是一个列表),如果像C风格的for循环这样的情况很有用.

  • 在标量上下文中没有列表这样的东西.在标量上下文中没有列表这样的东西.在标量上下文中没有列表这样的东西.在标量上下文中没有列表这样的东西.在标量上下文中没有列表这样的东西.在标量上下文中没有列表这样的东西.在标量上下文中没有列表这样的东西.在标量上下文中没有列表这样的东西. (8认同)
  • 您在标量上下文中有逗号运算符.请参阅[了解列表与数组之间的区别](http://www.effectiveperlprogramming.com/blog/39) (2认同)
  • 它没用.我一直在教Perl足够长的时间,知道说一些完全错误的东西是人们接受和使用的东西.当你说出来时,他们相信它,因为他们并不真正理解它.我们可以进行一场编辑大战,但是对于你来说,使用不是谎言的单词会更好,就像我在我指出的帖子中所做的那样. (2认同)