2011-12-23 5 views
18

今日、私はperlで配列の最大インデックスを決定するために必要な問題に遭遇しました。私は、このようにそれを行うために使用:ドルと数字の組み合わせは、どのようにしてperlで動作しますか?

my @array = (1, 2, 3); 
print $array[@array - 1]; 

しかし、私は、このコードにつまずいてきた今日:

my @array = (1, 2, 3); 
print $array[$#array]; 

私はドキュメントでその問題に何かを見つけることができませんでした。正確には$#の構成は何ですか?それは演算子ですか?そしてそれはどのように機能しますか?最初のコードより速いですか?常に最大配列インデックスを返しますか?それは非難されているかどうか?

多くの質問がありますが、それらはすべて1つでまとめることができます。それは本当に知りたいことです:どのように動作しますか?

+0

これはcshと似ています – sidyll

+4

'$#array'は最後のインデックスの番号を表示しますが、最後のアイテムを取得したいだけなら(そして実際のインデックスは気にしません)、はるかに使いやすくなります'$ array [-1]' – friedo

+1

関連する質問:http://stackoverflow.com/questions/2997042/where-is-the-documentation-for – Zaid

答えて

22

これはperldoc perldata, section "Scalar Values"に記載されています。要するに、$#array@arrayの最後のインデックスです。どのように動作するかは、オペレータのようなものですが、$@だけが演算子です。特別な構文と考えることができます。配列の最後のインデックスはちょうど "名前を持っている"ように起こります。これは、あなたが読み書きできる変数です。

6

perldataの使用例があります。配列内の最後の項目のインデックスを示します。

ところで、あなたはまた、最後の項目を取得するために

$array[-1] 

を使用することができます。

関連する問題