- 追加された行はこの色です。
- 削除された行はこの色です。
// 下階層用テンプレート
#topicpath
----
あまり詳しくないのですが、Perlでもオブジェクト指向的なコーディングができます。それの覚え書きです(2004/08/09現在、勉強初日っ)。
***クラスの書き方
***クラスの書き方 [#r5228a78]
どうもPerlの言語仕様をライブラリで拡張して、オブジェクト指向対応にしました、的な感触を受けたのですが(私がよく理解してないだけでしょうね)、こんな書き方をするみたいです。
package Class1; # クラス名
sub new { #コンストラクタ
$pkg = shift; #クラス名がはいる
return bless {}, $pkg; #<-Class1インスタンスへの参照を返す、の意味らしい。
}
sub hoge { #メソッド
return "Hello Perl World.";
}
1; #これは何だろう。。。
これをClass1.pmという名称で保存しておきます。呼出側は、
#!/usr/bin/perl -w
package main;
use Class1;
my $obj = Class1->new;
print $obj->hoge;
とすればインスタンス化、メソッド呼出というクラス的な使い方ができます。
***フィールドを宣言とか、フィールドをメソッド内で共有する
***フィールドを宣言とか、フィールドをメソッド内で共有する [#ccc495f1]
Perlではフィールドへのアクセス((そもそもフィールドかどうかも理解してないけど))は
#Class1クラスの作成
package Class1;
#コンストラクタ
sub new {
my $class = shift;
my $self = {
X => 10,
Y => 100
}; #結局はこのself変数がJavaのthisなので、
#この中の変数達がフィールドと考えるのかなぁ?
return bless $self,
$class; #<-Class1インスタンスへの参照を返す、の意味らしい。
}
#メソッドの宣言
sub hoge {
my $self = shift; #これは自分への参照を取得している
return "$self->{X} :$self->{Y}\n"; #this.Xとかthis.Yってか?
#でも""の中なんですけど...
#追記:Perlってこういうもんなんだって。
}
1;
----
この記事は
#vote(おもしろかった,そうでもない)
#vote(おもしろかった[1],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}