perl6 谈谈new方法, bless函数,类属性

class Human {
  has $.name;
  my $.counter = 0;
  method new($name) {
    Human.counter++;
    self.bless(:$name);
  }
}
my $a = Human.new('a');
my $b = Human.new('b');
 
say Human.counter;
say $a.name;
say $a.counter;
say $b.name;
say $b.counter;

:前置操作符,:$var
:$x 这个语法 等价于 x => $x

test 前置操作符号:$x

class Human {
  has $.name;
}
 
my $name='czq';
 
my $a = Human.new(:$name);
say $a.name;

谈谈new 和 bless

method new($name) {  
  self.bless(:$name);
}

method new($x) {  
  self.bless(name=>$x);
}

这两个效应是一样的,
如果利用前置操作符: 会省略好多字,尤其是有多个属性的时候。

谈谈类属性,对象属性

什么是类属性,所有的对象共有的一个属性,一个值,可以通过类访问,也可以通过对象访问。

声明类属性 用my代替has 就可以了

class Human {
  has $.name;        #对象属性 
  my $.counter = 0;  #类属性 
 
}
类属性的应用场景:统计一个类产生了多少个对象。