有没有人能解释一下在perl中使用bless的重要性和方法。我读过很多关于bless上的堆栈溢出的线程,但他们不清楚。
发布于 2013-06-20 21:07:21
perlobj documentation的顶部通过示例给出了有用的解释。
一个对象仅仅是一个数据结构
与许多其他支持面向对象的语言不同,Perl不提供任何用于构造对象的特殊语法。对象仅仅是Perl数据结构(散列、数组、标量、文件句柄等)显式地与特定类相关联。
这种显式关联是由内置的bless函数创建的,该函数通常在类的构造器子例程中使用。
下面是一个简单的构造函数:
包文件;子新{ my $class = shift;return $class {},$class;}
new这个名字并不特别。我们可以将构造函数命名为其他名称:
包文件;子加载{ my $class = shift;return $class {},$class;}
OO模块的现代约定是始终使用new作为构造函数的名称,但并不要求这样做。在Perl中,任何将数据结构放入类中的子例程都是有效的构造函数。
在前面的示例中,{}代码创建了一个对空匿名哈希的引用。然后bless函数获取该引用,并将散列与$class中的类关联起来。在最简单的情况下,$class变量最终将包含字符串"File"。
我们还可以使用一个变量来存储对作为我们的对象的数据结构的引用:
子新{ my $class = shift;my $self = {};保佑$self,$class;return $self;}
一旦我们完成了$self引用的散列,我们就可以开始调用它的方法了。
https://stackoverflow.com/questions/17212597
复制相似问题