为什么下面的代码返回11: - @myarray =(“Rohan”);perl中的数组操作
我得到的解释是: - 表达式$ scalar x $ num_times,另一方面,返回一个字符串,其中包含$ sc_lar连接在一起的$ num_times副本。 所以应该给10不11 ...
代码如下: -
print "test:\n";
@myarray = ("Rohan"); # this returns 11
##@myarray = ("Rohan","G"); this returns 22
@myarray2 = (@myarray x 2);
@myarray3 = ((@myarray) x 2); #returns Rohan,Rohan and is correct
print join(",",@myarray2,"\n\n");
print join(",",@myarray3,"\n\n");
谢谢特克里斯特 - 我只是想出了当埃里克评论有关标量上下文 - 我评论上面 - 但谢谢你的明确解释。这个论坛岩石 – rgolwalkar 2010-11-03 15:16:13
我更喜欢解释为()x是一个不同于x的运算符(至少在列表上下文中)。不仅LHO的背景发生变化,操作也完全不同(字符串重复与列表重复)。不幸的是,他们最近使得前面的语法错误“qw // x”像()x(用于任意分隔符)一样工作,这使得这是一个更加尴尬的事情来解释。 – ysth 2010-11-03 16:13:06
非常感谢你的解释 – rgolwalkar 2010-11-03 20:39:06