如何在perl中明确表示一个元素的文字列表?
我需要一个函数来返回一个列表,该列表作为唯一的输入列表被用作映射BLOCK LIST.我写了回归(6);因为我想返回一个包含一个元素的列表,但这看起来与括在括号中的标量相同.它会以我想要的方式解释吗?需要我使用丑陋的东西:return @ {[6]};执行我的意图?
解决方法
这里没有歧义,你无法无条件地返回一个列表.
在Perl 5中,每个表达式(包括子例程调用)都有一个上下文,它是列表上下文(返回零或更多值)或标量上下文(只返回一个值). return语句将子例程调用的上下文传播到return语句中的表达式.假设您正在尝试返回包含多个元素的列表: return (6,7,8); 这不能保证是一个列表.如果在标量上下文中调用sub,则return语句中的逗号表达式也在标量上下文中,并且标量上下文中逗号表达式的行为是返回最右边的值,此处为8. 如果您改为使用临时数组, return @{[6,8]} 然后,如果在标量上下文中调用它,您将在标量上下文中获得数组的行为,这将返回数组中元素的数量. 以上所有内容都适用于单元素列表,与示例中的三元素列表一样多. 一些一般事实: >无法强行返回列表 – 您只能返回调用者要求的内容. 这是你所要求的最接近实际存在的东西.请注意,没有括号 – 括号不会影响上下文. die "can't be scalar" unless wantarray; return 6; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |