为什么我得到不同的结果?
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
是字符串化的,但是结果是什么意思?
答案 0 :(得分:11)
say
命令在其参数上调用.gist
。 put
命令在其参数上调用.Str
。当您插入对象时,也会发生这种情况。
默认的gist
方法查看对象的公共属性,并从该对象创建一个字符串。
您可以通过提供自己的Str
方法来控制如何对对象进行字符串化。