在Perl 6中打印对象

时间:2018-10-08 20:47:03

标签: perl6

为什么我得到不同的结果?

class Car {
  has $.wheels;
}

my $my_car = Car.new( wheels => 4 );

say  $my_car ;  # Car.new(wheels => 4)
say "$my_car";  # Car<94582644384824>
put  $my_car ;  # Car<94582644384824>

我认为在第二和第三种情况下,$my_car是字符串化的,但是结果是什么意思?

1 个答案:

答案 0 :(得分:11)

say命令在其参数上调用.gistput命令在其参数上调用.Str。当您插入对象时,也会发生这种情况。

默认的gist方法查看对象的公共属性,并从该对象创建一个字符串。

您可以通过提供自己的Str方法来控制如何对对象进行字符串化。