我希望能够将对象存储在哈希结构中,这样我就可以将对象的名称作为变量来处理。 有人可以帮我做一个 sub new { ... } 创建一个新对象作为哈希成员的例程?我不确定如何执行此操作或如何在像这样存储时引用和/或使用对象。我只是想能够使用并引用其他子程序的对象名称。
请参阅How can I get name of an object in Perl?中的评论,了解我为何要这样做。
谢谢
答案 0 :(得分:5)
对象实际上没有名字。你为什么试图给他们起名字?其中一个基本要点是你不需要知道一个名字,甚至不需要知道它是什么类。
可能有更好的方法来完成你的任务。
但是,由于对象只是引用,引用只是标量,因此对象可以是哈希值:
my %hash = (
some_name => Class->new( ... ),
other_name => Class->new( ... ).
);
您可能需要查看一本书,例如 Intermediate Perl ,以了解参考和对象的工作原理。
答案 1 :(得分:2)
不太明白你想要做什么。也许你可以提供一些具体的例子?
您可以将对象存储为哈希,就像perl中的任何其他变量一样。
my %hash = ( );
$hash{'foo'} = new Foo(...);
$hash{'bar'} = new Bar(...);
假设您知道存储在'foo'的对象是Foo对象,而'bar'是Bar对象,那么您可以从散列中检索对象并使用它。
$hash{'foo'}->foo_method();
$hash{'bar'}->bar_method();
您可能希望以编程方式在运行时确定此行为。这是假设你坚持这个命名方案。