リストと配列

Perlのいくつかの機能はもっと面白いプログラムを書き込むことができます前に覆われている必要があります。まず、必要なPerlの'リスト'(または'配列')。 PerlのリストC言語で動的配列クラスのようなもの+ +やJava(例えば、java.util.Vector)に。リストが、Perlのオブジェクトの構文を使用しないでくださいリストは基本的にデータを所有していると機能の関連グループを持つオブジェクトです。 Perlのリスト:

  

これらのクラスのメンバ関数ではありません(通常のスカラー値を、データ要素のコレクションを所有している場合などperldscで説明したリストやその他のより複雑な構造体のリストを作成することができます。れません([OK]を、'それ'に)行っている:

-通常、非初期化リストを作成する空のデータ要素の集合(ただし、空のリスト)の罰金です。

-追加要素は、'フロント'または'一覧の最後に'での。

-削除する要素は、'フロント'または'リストの終わり'での。

特定の位置にする- Accessの要素(この機能は動作'array'だけでなく、リストの動作のように)それを提供します。

動的配列-リターンは、コレクションのサイズ(長さ)。

-コピー別の配列に。

その他の機能のリストに関連するリストの並べ替えと逆の順序で要素をリストのコピーを返すための関数が含まれます。

リストは、'@'の型修飾子を使用して指定されます。自分の名前は、通常の規則に従っ

-文字の英数字が続きます(とリスト、Perlのコアに供給のための特別な名前のいくつかの他の文字)。時を形成する名前は、Perlの文字としては、アンダースコア文字を考えている。有効なリストの名前です:

@ list_1 @ _data @ inputlines @結果@このページをMYLIST

Perlのハンドル')が、別のスカラー、リスト、ハッシュのデータ型(と'のような他の種類のファイルを別個の'名前空間'を維持します。場合(ただし)は、あなたのコードの後に見ている経験の浅いメンテナンスプログラマの動揺がスカラー$結果、任意の混乱のPerlを引き起こすことなく結果@リストを持つことができます。

リストリテラルをサポートしています:(1、2、3)("トム"、"ディック"、"ハリー"、"")($名$住所$町)を訴える

リストリテラルを頻繁に配列を初期化するために使用されます。もう1つの使用方法'左辺'左代入文の右辺に(何か)として、リストリテラルしています。この使い方は後で説明されるので、既存のリストから特定の要素の抽出に関連する機能が便利です。リストリテラルのいくつかの例をリストで使用されて/配列作成されます:

@ PlacesIveBeen =();#私てどこにもまだされて-そう、GradePts =(45、50、65、75、85 @空リスト); @都市=("ロンドン"、"パリ"、"ニューヨーク" "ローマ"、"東京"、"シドニー"); @人=("トム"、"ディック"、"ハリー"、"")を訴える; @ TeenYears =(13 .. 19);

を示し、これらの更新は、Perlの'..'範囲演算子です。この(13、14、15、16、17、18、19)などのコレクションを定義するための短い方法です。範囲演算子'での反復foreachの'を使用することができます構造- (1 .. 100); foreachループをこの資料の後半で説明しています。以来、単語のリストを初期化する必要がありますに共通して、Perlのヘルパー関数は井戸が() 。したがって、かもしれない:

@人=井戸(トムディックハリーを訴える);

井戸()関数は、常に適切ではありません。次の使用:

@都市=井戸(ロンドンパリニューヨークのローマ東京シドニー);

のようにリスト内の検索結果:(ロンドン、パリ、新機能、ニューヨーク'、ローマ、東京、シドニー)は、何を意図していた、おそらくされていません。次のコードフラグメントを作成するといくつかのリストの使用方法を示します。ループは、リストの要素にアクセスするさまざまな方法を示します:

@ Cities1 =("ロンドン"、"パリ"、"ニューヨーク"); Cities2 @ 3つの要素=量子井戸(ローマ'ロサンゼルス'#をリスト"サンフランシスコ");#5つの要素Cities3!@ =("ワガワガ"、"ヘイ"、"クーマ");#qqように()およびq()、井戸(その他)デリミタことができます:@ Cities4 =井戸\ Thiroul Bellambi Keiraville \;印刷"Cities1:\ N"は、$サイズ= @ Cities1;($私= 0; $私は"$サイズ; $私+ +)(]、"\ Ñ";)印刷"Cities1:\ N"は、$ foreachの都市Cities2()(印刷@ iを$ Cities1 [$印刷$都市、"\ Ñ";)印刷"Cities3:\ N"の;)($ Cities3 [$ Iプリント]、"\ Ñ";)印刷"Cities4:Cities4 @ \私は(0 .. $#Cities3するforeach $ N"の; Cities4 @印刷;

行$サイズ= Cities1 @;'スカラーコンテキストで'での配列の使用方法を示します。Perlには配列の長さの要求としては、この解釈は$サイズの値が3かかります。最初のforループは、従来のカウントループのループインデックスをインデックスにCities1コレクション@使用されています。 iは使い方$都市[$注];のデータ型をここではスカラです-私たちは、コレクション内の指定した位置から1つのデータ要素を抽出されます。2番目のループの3番目のPerlのforeachループの例で構築されます。これらのループの形式は:

foreachの (一覧)ブロックforeachの(リスト)ブロック

(キーワードformayではなく、foreachの使用されるが、foreachのより読みやすくなります。)通常は、単純にそれぞれにアクセスする変数は、リストからの参照は、現在の要素が、これは必須ではありません。コード例では、foreachループの最初の選択$ Cities2で(5!)要素は、順番にそれぞれの名前を印刷。 2番目のループのカウントのようです。表現$#Cities3を返します(スカラー)の値はCities3 @は、リストの最後の要素のインデックスです。したがって、このループは本当に)$私は(0、1、2、foreachのです(... ;)このループをもう一度リストからデータ要素を抽出するために配列のスタイルのインデックスを使用します。最後に、リストは$ Cities4 2回印刷されます。最初のprint文のリストを文字列に補間して、この要素を空白で区切って出力します。すべてのデータ要素を1つの長い文字列に変換(出力のではなく、特に便利な形式は、Perlのシステムだけで、別の機能)の連結を持つ行の最終的な印刷ステートメントの結果。リストを連結することができます:

@男性=井戸(ミッキードナルド); @女性=井戸(ミニーデイジー);男性@ DisneyMob =(、女性、@ @"冥王星");

これは、単一レベルの一覧(ないLispは、リストのリストのような)を生成します:

ミッキー、ドナルド、ミニー、デイジー、冥王星の配列'スライスされた部分配列を与える:ライン@行=井戸(1 2 3 4); @ firsttwo = @ [0,1];行@ [0,1] =することができます( "5"、"6");

または値をプッシュしてポップすることができます:

@ =();(@スタックは、"1");(@スタックにプッシュ、"2");(@、4 3スタック)を押し(@、、、8 5、6、7スタックにプッシュ"プッシュスタック9"、101);印刷@スタック"\ N"は、$ヴァル=開く(スタック)@;印刷"@スタックは\ Nで";

(と同様の方法でシフトキーを戻す作業は、起動時ではなく、リストの最後に、オペレーティングシフトを推進し組み合わせることができますし、ダブルキュー期)の逆関数は、リストのコピーを返すような何かを達成するなどシフト逆の順序で要素を持つ。デフォルトでは、ソート関数、文字列として、すべてのリストの要素を扱うアルファベット順の並べ替えを使用して、もう一度、新しいリストを返します。

@ newRevList連想()@逆=; @自然数=井戸(これは、テストの他に何Hello Worldのハイママは等等);#プリントとして:LIST1を:このテストの他に何Hello Worldのハイママ等等#Peformソートされると、次にソート印刷リスト;大文字...分別#より低い小文字ランク:こんにちはこんにちは、この世界他等等list2に=(100、26、3、49、-11 @何#いくつかの数値データのお母さんテストです、3001、78);
#順! (順アルファベット順)並べ替え:-11 100 26 3 3001 49 78

アルファベット順ソートを変更することができますが、デフォルトのソート動作を、あなた自身の並べ替えのヘルパーのサブルーチンを提供することがあります。並べ替えのためのヘルパー関数は、ほとんどのユーザーの非定型的に定義されたルーチンがありますが、それらを記述するのは難しいされていません。あなたのルーチンは、配列から2つの要素で比較演算の結果を返すために呼び出されます-これらの要素は、グローバル変数に格納されているが、$ aと$あなたのサブルーチンを呼び出します。特定のグローバル変数(これを使用するBの前にどのようにこの種のサブルーチンを他のプログラマと違うの定義のルーチンです。)を次のコードの定義とは一種のヘルパーサブルーチン'の使用方法を示しますnumeric_sort'。

#!/共有/ bin / perlで、ワットのサブnumeric_sort(場合($"$ 2)(-1を返します;)elsif($ == $ 2)(戻り0;)他(返す1;))list2に@ =(100、26、3、49、-11、3001、78); @ slist2 list2に@ =並べ替え; list2に@を印刷"List2の\ N"は、印刷する"分別List2の(デフォルトのソート順)@ slist2 \ N"の; @ nlist2 = list2に@をソートnumeric_sort;印刷"分別List2の(数値ソート)nlist2 @ \ N"の;

は、数値のソート関数を簡素化する可能性がPerlの数値の比較で"="演算子は、特別して、この演算子を使用して:

@サブnumeric_sort("="$ B)を

Perlでの許可、並べ替えのヘルパー関数の行の定義などの構築が可能:

@ nlist2 =並べ替え($"="$ B)をlist2に@;
記事は、サラミラー提出


免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。
重要: この記事は、"リストと配列の"自動ソフトウェアによって翻訳された。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。


Online: 474 users browsing the articles directory