Perl   发布时间:2022-04-05  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了perl – 在标量上下文中是否存在列表?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_298_2@my $mind = ( 'a','little','confused' );

是因perldoc perlfaq4解释了上面的行如下(重点补充):

我理解这意味着在标量上下文中没有列表这样的东西.

但是,ikegami认为它是“result[s] in a list operator,so it is a list literal.”

那么,它是否是一个列表?

解决方法

列表文字实际上是在代码中写出的列表,因此(1,2,3)是列表文字,而调用者例如是可以根据上下文返回列表或标量的函数.

在一行中:

@H_298_2@my $x = ...;

…看到标量上下文,所以如果…是一个列表文字,那么你将在标量上下文中有一个列表文字:

@H_298_2@my $x = (1,3);

但是列表文字不会产生列表,因为它包含的逗号运算符会看到标量上下文,然后导致它返回列表文字的最后一项,并在评估它们之后抛弃剩余的值.

就函数而言,函数本身可以看到它被调用的任何上下文,然后它被传播到返回的函数中的任何行.因此,您可以在标量,列表或无效上下文中使用函数,如果该子集的最后一行恰好是列表文字,则该列表文字将看到任何这些上下文并且将表现得恰当.

所以基本上这是术语的区别,列表文字引用实际源代码*中逗号分隔的值列表,列表引用放在perl堆栈上的值序列.

您可以编写具有返回值的子例程,这些返回值的行为类似于数组或类似于上下文的列表文字.

sub returns_like_array  {my @x = 1..5; return @x}

sub returns_like_list   {my @x = 1..5; return @x[0 .. $#x]}

*或导致逗号分隔值列表的内容,如qw()或fat逗号=>或散列或数组切片.

您也可以在这里查看我的答案:How do I get the first item from a function that returns an array in Perl?,它详细介绍了列表.

大佬总结

以上是大佬教程为你收集整理的perl – 在标量上下文中是否存在列表?全部内容,希望文章能够帮你解决perl – 在标量上下文中是否存在列表?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。