感想とメモ - すぐわかるオブジェクト指向Perlの第三章を読んだ

  1. すぐわかるオブジェクト指向Perlの第一章を読んだ
  2. すぐわかるオブジェクト指向Perlの第二章を読んだ
  3. すぐわかるオブジェクト指向Perlの第三章を読んだ←今ココ
  4. すぐわかるオブジェクト指向Perlの第四章を読んだ
  5. すぐわかるオブジェクト指向Perlの第五章を読んだ

感想

配列のリファレンスは少し複雑です。スカラー変数だけ使って、リファレンスを理解していくのとはワケが違います。配列のリファレンスで心がポキりと折れてしまう人も多いんじゃないかと思います。すぐわかるオブジェクト指向Perlでは、配列のリファレンスについてやはり具体的に説明してます。コンピュータが具体的にどのようにリファレンスを処理しているか、一行一行追って説明してくれます。その他にも配列リファレンスのパターンを一つだけではなく、複数のパターンを用意して解説を加えてます。何度も繰り返し読んでいきたい章です。

メモ

この章で学べること一覧

・配列の復習
・配列リファレンスの取得とデリファレンス
・2つ以上の配列をサブルーチンに渡す
・リファレンスが指す配列の各要素へのアクセス
・$$refMonth[4]ってわかりにくくないですか
・矢印記法
・二次元配列
・自動生成の威力
・シンタックシュガーが利かない場合
・無名配列
・リストの最後に余計なカンマ
・無名配列を使おう
・ブラケットのネスティング
・二次元配列の2つの表現

普通の配列

  • 配列はパレーン()で囲んだもの
  • ブラケット[]を使って配列にアクセスをする
@array = ('a', 'b', 'c');

print $array[1];

配列のリファレンスから配列全体にアクセス

  • 配列のリファレンスはスカラー($)
    • $ref_array = \@array;
  • リファレンスをデリファレンスして、配列の全体を取ってくる
    • @$ref_array
@array = ('a', 'b', 'c');

$ref_array = \@array;

print @$ref_array

配列のリファレンスから配列の各要素にアクセス

  • @$ではなく$$でアクセスしている
@array = ('a','b','c');

$ref_array = \@array;

print $$ref_array[1];

矢印記法を本書では以下のように説明しています。

$$ リファレンス変数名[インデックス]

という書き方は

$リファレンス変数->[インデックス]

という書き方で置き換えれます。
  • 矢印記法で置き換え
    • $$ref_array[1]を$ref_array->[4]にした
    • $$ref_array[1]は配列のリファレンスから配列の各要素にアクセスすることができる
@array = ('a', 'b', 'c');

$ref_array = \@array;

print $ref_array->[4];

$$array[1]と${$array[1]}は違う

  • $$array[1]は配列のリファレンスをデリファレンスしたものにしたいして[1]にアクセスしている
  • ${$array[1]}は配列の第2要素に入ったリファレンスをデリファレンスしている。
@array = ('a','b','c');

$ref_array = \@array;

print $$ref_array[1];
$a = 'a';

$b = 'b';

$c = 'c';

@array = (\$a, \$b, \$c);

print ${$array[1]};

すぐわかる オブジェクト指向 Perl

すぐわかる オブジェクト指向 Perl