1. ホーム
  2. perl

[解決済み] Perlの "bless "は具体的に何をするのですか?

2022-03-04 10:53:42

質問

Perlでは、クラスの"new"メソッドの中で"bless"キーワードを使用するそうですが、このキーワードは何ですか?

sub new {
    my $self = bless { };
    return $self;
}    

しかし、そのハッシュ参照に対して "bless" は一体何をしているのでしょうか?

どのように解決するのか?

一般的には bless はオブジェクトをクラスと関連付けます。

package MyClass;
my $object = { };
bless $object, "MyClass";

これで $object Perl はどのパッケージからメソッドを検索すればよいかを知っています。

この例のように第2引数が省略された場合は、現在のパッケージ/クラスが使用されます。

わかりやすくするために、この例は次のように書くとよいでしょう。

sub new { 
  my $class = shift; 
  my $self = { }; 
  bless $self, $class; 
} 

EDIT: 参照 キックス の良い 答え をご覧ください。