我刚接触Perl,希望了解更多关于面向对象的部分。 假设我有一个只有属性的“类”,创建一个包并将哈希表转换为引用后进行操作与直接操作哈希表相比是否有优势?
为了简单起见,我们考虑以下示例:
package Person;
sub new {
my $class = shift;
my $args = {Name => '', Age => 0, @_};
my $self = { Name => $args->{Name},
Age => $args->{Age}, };
bless $self, $class;
}
package main;
my $person1 = Person->new(Name => 'David', Age => 20);
my $person2 = {Name => 'David', Age => 20, Pet => 'Dog'};
print $person1->{Name} . "\n";
print $person2->{Name} . "\n";
我想知道$person1
和$person2
的区别是什么,在面向对象方面之外,除了一个被赋予 bless 的哈希和一个哈希引用的事实?
在这种情况下,使用对象有什么好处,而不是使用哈希?
回答后:
感谢大家的帮助 :)
Håkon Hægland的评论对我来说最接近答案, 我只是想知道,如果我只需要保存简单标量,没有特殊检查,也没有其他功能,那么使用类是否比简单哈希更有优势 (我明白如果我需要额外的功能和继承,类将是正确的工具)
$person1
的类名。您还可以安排Person
从基类继承属性。 - Håkon Hægland