我有一个函数返回一个数组,我想从该数组中得到第一个项目,而不是为数组声明一个变量.基本上,它应该是这样的:
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循环这样的情况很有用.