この章では配列の関数について説明します。
関数は入力したデータに基づいて決められた処理を行い、戻り値という結果を返す機能を持っています。
このデータは引数と呼ばれています。 引数1は第1引数、引数2は第2引数と言います。
ここでは第2引数までしか書いていませんが引数3、引数4と続きます。
引数の数は関数によって違います。
では関数についてさらに詳しく説明します。
「Perlの基礎を知ろう」の章では関数については以下の通り説明しました。
Perlの関数の仕組みはエクセルの関数の仕組みと意味は同じです。エクセルをご存知の方はわかると思いますが、例えばエクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。
例えば指定した範囲のデータが3,5,7であるならば結果は15です。SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
Perlには初めからこのように機能が定義されている関数が多数ありますので、配列に関係する関数を取り上げたいと思います。
printは出力する関数でしたが、配列の関数は配列のデータの順番を変えたりする便利な関数が多数ありますので、次で紹介します。 join関数は配列を指定した区切り文字で連結して、その結果を戻り値として返します。 結果は以下の通りです。
「猫と犬とライオンと象とネズミ」
色々区切り文字を入れて試してみてください。 shift関数は配列の先頭の要素を切り取って、その切り取った要素を返します。 $rには取り除いた要素である猫が代入されています。取り除かれた後の配列の要素は改めて添え字が振り直されますので、添え字の先頭は犬になります。 unshift関数は配列の先頭に要素を追加します。 $rには要素追加後の要素数が入りますので6が代入され、@animalは蛙を先頭に追加したのでとなります。 pop関数は配列の末尾のデータを取り除きます。 $pには取り除いた要素であるネズミが代入され、@animalはネズミが取り除かれていますのでとなります。push関数は配列の末尾にデータを追加します。 $tには要素追加後の要素数が入りますので6が代入され、@animalは蛇を末尾に追加したのでとなります。
sort関数は氏名やID番号などのデータをアルファベット順や番号順などで並び替える時に使います。
次の通り、sortの基本構文は複数ありますが、順番に説明していきます。 結果は以下の通りです。
「E a b c d f」
標準の文字列比較の順番で文字が昇順に並び替えられます。
順序は
〇abc順
〇大文字は小文字より前
〇数値はアルファベットより前という法則で決まります。
文字を昇順で比較したい場合は上の構文を使用します。
cmpは文字コードで比較するときに使う演算子です。 結果は以下の通りです。
「a b c d e f」
数値が1番前に来ているのが分かります。
文字コードの降順で比較したい場合は上の構文を使用します。
「sort { $a cmp $b } 配列;」との違いは$aと$bの位置です。
結果は以下の通りです。
「f e d c b a」
数値を昇順、つまり123順で比較したい場合は上の構文を使用します。
cmpは文字コードで比較するときに使う演算子でしたが、は数値で比較するときに使う演算子です。 結果は「0 2 3 4 7」です。
数値を降順で比較したい場合は上の構文を使用します。
sort { $a <=> $b } 配列;との違いは$aと$bの位置です。
結果は「7 4 3 2 0」です。
reverse関数は引数に指定した配列に含まれる要素を逆に並べた配列を返します。
結果は以下の通りです。
2 0 7 3 4
f d E a c b
しかし、splice関数を使用すれば配列の先頭もしくは末尾以外から要素を取り出すことが可能になります。
splice関数には幾つかの構文があります。 添え字で指定した箇所から末尾までを削除した配列を返します。
この例ではsplice関数の第2引数が1なので、配列の犬から末尾までの要素が削除対象になります。
@seには配列の中の削除した要素が代入されていますので、
結果はです。
@animalには削除後の要素である猫が入っています。
配列の先頭から末尾までを削除したリストを返します。
この例ではsplice関数の第2引数を指定していないので、配列のすべての要素が削除対象になります。
@seには配列の中の削除した要素が代入されていますので、
結果はです。
@animalにはすべてを削除したので何も残っていません。
添え字で指定した箇所から指定した数だけ削除したリストを返します。
この例ではsplice関数の第2引数に1を指定しているので犬から2個削除した配列を返します。
@seには配列の中の削除した要素が代入されていますので、結果はです。
@animalには削除後の要素であるが入っています。
添え字で指定した箇所から指定した数だけ削除して、その削除した箇所に新たなリストを加えます。
そしてその削除した要素を返します。
この例ではsplice関数の第2引数に1を指定しているので犬から2個削除してから、その削除した箇所に@animal2の要素を加えます。
@seには配列の中の削除した要素が代入されていますので、結果は「犬 ライオン」です。
@animalには削除した箇所に龍、ネッシーを加えているので、になります。
カテゴリー