为什么打印列表输出列表中的最后一项?

时间:2016-08-12 05:56:21

标签: list perl printing

print "Val: " . ('a','b','c');

输出结果为:

  

C

为什么?

如何做到这一点并不重要。它可能是:

sub test {
    return ('a','b','c');
}
print "Val: " . test();

2 个答案:

答案 0 :(得分:5)

http://blogs.perl.org/users/steven_haryanto/2012/09/the-comma-operator.html

解释了逗号运算符。引用它们,

“......它只是二进制逗号运算符。在标量上下文中,逗号运算符(引用perlop manpage逐字)”计算其左参数,抛出该值,然后计算其右参数并返回那个价值。这就像C的逗号运算符一样。“所以最终的结果是最正确的论点......”

答案 1 :(得分:3)

连接运算符(.)将两个标量作为操作数,因此您的列表将在标量上下文中进行评估。正如roderick Young的回答所解释的那样,由于逗号运算符的工作方式,列表在标量上下文中进行评估时会返回其最终值。

如果您要打印列表中的所有项目,可以在,语句中使用.代替print,或者(可能更好)使用{{1}在连接之前将列表转换为标量:

join
相关问题