我希望能夠將對象存儲在散列結構中,以便我可以將對象的名稱作爲變量來處理。 有人可以幫我做一個 子新{ ... } 例程創建一個新的對象作爲散列的成員?我不確定如何去做這件事,或者如何在存儲這樣的對象時參考和/或使用對象。我只是想能夠使用並引用其他子例程的對象名稱。如何在perl中創建對象的散列
看到我的評論在How can I get name of an object in Perl?爲什麼我想這樣做。
謝謝
我希望能夠將對象存儲在散列結構中,以便我可以將對象的名稱作爲變量來處理。 有人可以幫我做一個 子新{ ... } 例程創建一個新的對象作爲散列的成員?我不確定如何去做這件事,或者如何在存儲這樣的對象時參考和/或使用對象。我只是想能夠使用並引用其他子例程的對象名稱。如何在perl中創建對象的散列
看到我的評論在How can I get name of an object in Perl?爲什麼我想這樣做。
謝謝
對象沒有真正的名字。你爲什麼試圖給他們的名字?引用的基本點之一是,你不需要知道一個名字,或者它是什麼類,來處理它。
可能有更好的方法來實現你的任務。
然而,由於對象只是引用,引用只是標量,對象可以是一個哈希值:
my %hash = (
some_name => Class->new(...),
other_name => Class->new(...).
);
你可能想看看書,如中級Perl學習如何參考和對象的工作。
不太明白你想要做什麼。也許你可以提供一些具體的例子?
您可以將對象存儲到散列中,就像perl中的任何其他變量一樣。
my %hash = ();
$hash{'foo'} = new Foo(...);
$hash{'bar'} = new Bar(...);
假設你知道儲存在「富」的對象是一個Foo對象,並在「酒吧」是一個酒吧對象,那麼你可以從哈希的對象,並使用它。
$hash{'foo'}->foo_method();
$hash{'bar'}->bar_method();
您可能希望在運行時以編程方式確定此行爲。假設你堅持這個命名方案。
調用方法時最好不要使用間接對象表示法。所以不是'new Foo(...);'--use'Foo-> new(...);'參見perlobj(http://perldoc.perl.org/perlobj.html#Indirect-Object-Syntax )瞭解更多信息。 – daotoad 2010-09-02 02:27:08
你的意思是你想使用_class_的名字來命名這些目錄嗎? – flies 2010-09-01 13:47:36