【发布时间】:2017-06-19 15:39:18
【问题描述】:
我正在学习 Perl 中的 OOP 概念,其中语法与 Java 不同,我曾经学习过 OOP 概念。
我有一个例子来声明一个类Person,但我有点困惑。
代码如下
package Person;
sub new {
my $class = shift;
my $self = {
_firstName => shift,
_lastName => shift,
_ssn => shift,
};
# Print all the values just for clarification.
print "First Name is $self->{_firstName}\n";
print "Last Name is $self->{_lastName}\n";
print "SSN is $self->{_ssn}\n";
bless $self, $class;
return $self;
}
从上面的例子中,my $self 是标量变量还是散列变量?
据我所知,Perl 中的散列变量用% 声明,而$ 用于标量变量。
bless 函数有什么用?为什么返回$self?
【问题讨论】:
-
参见Moose 了解 Perl 中更现代的 OO。
-
我建议你看这个优秀的教程:youtube.com/watch?v=LKXvG6VKew4
-
@WumpusQ.Wumbley:“你坚持“数组和散列并不特殊”是错误的” 如果你能找到一个精通 Perl 并同意的人,我会尊重你与你。而且我想你不知道教学法是什么意思。
-
这是一个很大的话题,在
perldoc perlootut中有很好的介绍,它应该是您的 Perl 安装的一部分。您需要掌握 Perl 的基础知识,例如引用和匿名数据结构,但您需要的一切都在perldoc中进行了描述。我一直使用 Perl 来教授 OOP,因为它只使用基础语言提供多态、继承和封装。其他语言通过将所有内容都构建到语法中来使事情变得“更容易”,但对正在发生的事情的洞察力要少得多。 -
@simbabque:那个视频是 Moose 教程,我希望它会让 OP 更加困惑。 Perl 非常擅长指出对象只是另一个参数,而“类”只是一个名称空间。一旦您了解了这一切,很高兴让 Moose 为您创建所有基础架构,但我认为了解幕后发生的事情至关重要。