Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2097415
  • 博文数量: 414
  • 博客积分: 10312
  • 博客等级: 上将
  • 技术积分: 4921
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-31 01:49
文章分类

全部博文(414)

文章存档

2011年(1)

2010年(29)

2009年(82)

2008年(301)

2007年(1)

分类:

2008-06-20 11:22:26

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;

或者可以使用如下的简写:

sub new {
    my ($class, $context) = @_;

    return bless {}, $class;
}

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)


bless REF,CLASSNAME

  • bless REF

    This function tells the thingy referenced by REF that it is now an object in the CLASSNAME package. If CLASSNAME is omitted, the current package is used. Because a is often the last thing in a constructor, it returns the reference for convenience. Always use the two-argument version if a derived class might inherit the function doing the blessing. See and for more about the blessing (and blessings) of objects.

    Consider always blessing objects in CLASSNAMEs that are mixed case. Namespaces with all lowercase names are considered reserved for Perl pragmata. Builtin types have all uppercase names. To prevent confusion, you may wish to avoid such package names as well. Make sure that CLASSNAME is a true value.

    See .

阅读(1863) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~