perlのクラスファイルの作り方
2015/04/19
パッケージとクラスの違い。
- コンストラクタを宣言する必要がある。
(機能的にはそんなに。。宣言上もこれだけかな…)
①クラスの宣言(= packageの宣言)
1 |
package クラス名; |
②コンストラクタの作成
- コンストラクタは新しいオブジェクトを作成し、
そのリファレンスを返すメソッド。(javaとかのコンストラクタとは若干違う。)
- newという名前で宣言し、第一引数として、クラス名が渡される。
1 2 3 4 5 |
package Class; # クラス宣言 sub new {# コンストラクタ宣言 my $class = shift; # 引数配列からクラス名を格納。 .... } |
③次にオブジェクトを用意
できた簡単なクラス
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# クラスのパッケージ名を宣言 package Class; ######################################### クラスメソッドコンストラクタ ######################################### sub new{ # 暗黙のうちに引き渡されるクラス名を受け取る my $class = shift; # 無名ハッシュのリファレンスを作成 my $self = { x=>10, y=>20 }; #ハッシュを返しいるが、スカラー変数を返すことも可能。 # bless したオブジェクトリファレンスを返す return bless $self, $class; } |
blessとは
bless関数の引数は、リファレンスとパッケージ名になります。第1引数で与えられたリファレンスが指すオブジェクトは、第2引数で指定したクラスに所属します。
blessした変数はクラスのオブジェクトに属することになるので、普通の変数と区別するためにインスタンスと呼ばれます。
→メンバー変数を定義するための関数。
shiftについて
通常shiftは配列変数を引数にとり、配列変数から一番若いインデクスの要素を取り出します。
しかし引数をとらず、単独でshiftした場合、@_(引数配列)がデフォルト引数になる。
perlオブジェクト指向の用語の特殊性
- コンストラクタ
新しいオブジェクトを作成し、そのリファレンスを返すサブルーチン
(javaなんかでは、クラスの最初に実行されるメソッドのこと。)
- インスタンス
オブジェクトに属する変数
(javaなんかでは、メモリ上にロードされたオブジェクトのこと。)
- PREV
- perlで外部ファイル内の変数を読み込む
- NEXT
- Robocopyのログの意味
関連記事
-
-
perlで外部ファイル内の変数を読み込む
12345678■呼び出し先$TEST = "testtest";1;■呼び出し元require('./conf.pl');print $TEST;■結果testtestこれで、呼び出 …