爲什麼下面的代碼返回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