Perl: Bless略解
URL: http://www.elanso.com/ArticleModule/P0UAMlPUM6KzJhUKPpQmKzIi.html
例子2:bless函数与ref函数,以及hash
1. 构造函数是类的子程序,它返回与类名相关的一个引用。将类名与引用相结合称为“祝福”一个对象,因为建立该结合的函数名为bless(),其语法为:
bless YeReference [,classname]
YeReference是对被“祝福”的对象的引用,classname是可选项,指定对象获取方法的包名,其缺省值为当前包名。
创建一个构建函数的方法为返回已与该类结合的内部结构的引用,如:
sub new {
my $this = {}; # Create an anonymous hash, and #self points to it.
bless $this; # Connect the hash to the local package return $this; # Return the reference to the hash.
}
1;
{}创建一个对不含键/值对的哈希表(即关联数组)的引用,返回值被赋给局域变量$this。函数bless()取出该引用,告诉对象它引用的是当前包,最后返回该引用。函数的返回值现在指向这个匿名哈希表。
从new()函数返回后,$this引用被销毁,但调用函数保存了对该哈希表的引用,因此该哈希表的引用数不会为零,从而使Perl在内存中保存该哈希表。创建对象可如下调用:
$cup = new Cocoa ;
2.ref($var),如果$var为一个引用,ref函数返回背阴用的对象名。如果$var不是一个引用,ref函数返回undef。
3.my $self = {} #创建一个空的匿名hash表的引用
4.my ($class, $name) = @_;等价于
my $calss = shift;
my $name = shift;
shift 的意思就是把整个 array 的第一个 value 取出,并将 array 长度减一(有点像 pop out)