大佬教程收集整理的这篇文章主要介绍了如何判断Perl代码中的一组parens是作为分组parens还是组成列表?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
例如,我很确定这是一个标量而不是单元素列表:(1 1)
但是更复杂的表达呢?有简单的说法吗?
语境是王道.您的示例(11)的评估取决于上下文.
$x = (1 + 1); # Scalar context. $x will equal 2. Parentheses do nothing here. @y = (1 + 1); # List context. @y will contain one element: (2). # Parens do nothing (see below),aside from following # syntax conventions.
在标量上下文中,没有列表这样的东西.要查看此内容,请尝试将看似列表的内容分配给标量变量.考虑这一点的方法是关注逗号运算符的行为:在标量上下文中,它评估其左参数,抛出该值,然后计算其右参数,并返回该值.在列表上下文中,逗号运算符将两个参数都插入到列表中.
@arr = (12,34,56); # Right side returns a list. $x = (12,56); # Right side returns 56. Also,we get warnings # about 12 and 34 being used in void context. $x = (@arr,7); # Right side returns 7. And we get a warning # about using an array in a void context.
括号不会创建列表.逗号运算符创建列表(假设我们在列表上下文中).在Perl代码中键入列表时,出于优先级原因需要使用括号 – 不是出于列表创建原因.几个例子:
>括号无效:我们正在用标量计算数组
上下文,所以右侧返回数组大小.
$x = (@arr);
>创建包含一个元素的列表不需要括号.
@arr = 33; # Works fine,with @arr equal to (33).
>但是由于优先原因,需要多个项目的括号.
@arr = 12,56; # @arr equals (12). And we get warnings about using # 34 and 56 in void context.
以上是大佬教程为你收集整理的如何判断Perl代码中的一组parens是作为分组parens还是组成列表?全部内容,希望文章能够帮你解决如何判断Perl代码中的一组parens是作为分组parens还是组成列表?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。