在Perl 6中打印对象

Eug*_*sky 8 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>
Run Code Online (Sandbox Code Playgroud)

我想在第2和第3个案例中$my_car是字符串化的,但结果意味着什么?

Eli*_*sen 11

say命令调用.gist其参数.该put命令调用.Str其参数.插入对象时也会发生这种情况.

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

您可以通过提供自己的Str方法来控制对象的字符串化方式.