如何在perl中明确表示一个元素的文字列表?

如何在perl中明确表示一个元素的文字列表?,第1张

概述我需要一个函数来返回一个列表,该列表作为唯一的输入列表被用作映射BLOCK LIST.我写了回归(6);因为我想返回一个包含一个元素的列表,但这看起来与括在括号中的标量相同.它会以我想要的方式解释吗?需要我使用丑陋的东西:return @ {[6]};执行我的意图? 这里没有歧义,你无法无条件地返回一个列表. 在Perl 5中,每个表达式(包括子例程调用)都有一个上下文,它是列表上下文(返回零或更 我需要一个函数来返回一个列表,该列表作为唯一的输入列表被用作映射BLOCK List.我写了回归(6);因为我想返回一个包含一个元素的列表,但这看起来与括在括号中的标量相同.它会以我想要的方式解释吗?需要我使用丑陋的东西:return @ {[6]};执行我的意图?解决方法 这里没有歧义,你无法无条件地返回一个列表.

在Perl 5中,每个表达式(包括子例程调用)都有一个上下文,它是列表上下文(返回零或更多值)或标量上下文(只返回一个值). return语句将子例程调用的上下文传播到return语句中的表达式.假设您正在尝试返回包含多个元素的列表:

return (6,7,8);

这不能保证是一个列表.如果在标量上下文中调用sub,则return语句中的逗号表达式也在标量上下文中,并且标量上下文中逗号表达式的行为是返回最右边的值,此处为8.

如果您改为使用临时数组,

return @{[6,8]}

然后,如果在标量上下文中调用它,您将在标量上下文中获得数组的行为,这将返回数组中元素的数量.

以上所有内容都适用于单元素列表,与示例中的三元素列表一样多.

一些一般事实:

>无法强行返回列表 – 您只能返回调用者要求的内容.
>如果在标量上下文中调用List-y,则没有系统的选择 – 列表中将在列表上下文中返回的元素数量是一种常见的选择,但不是通用的.
>如果你想拥有一个明确指定的子程序,你就不能说“它总是返回一个列表”;你必须指定当需要返回标量时会发生什么. (如果你愿意的话,你可以决定它会永远死掉.)
>如果要根据调用是在标量还是列表上下文中进行显式选择,可以使用命名不佳的内置的wantarray,如果在列表上下文中调用子例程,则返回true.

这是你所要求的最接近实际存在的东西.请注意,没有括号 – 括号不会影响上下文.

dIE "can't be scalar" unless wantarray;return 6;
总结

以上是内存溢出为你收集整理的如何在perl中明确表示一个元素的文字列表?全部内容,希望文章能够帮你解决如何在perl中明确表示一个元素的文字列表?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1255536.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存