日期对象“忘记”格式化程序?

Jo *_*als 6 perl6 raku

使用Perl6的Date时,格式化器对象的处理是否存在错误?如果我在实例化该对象之后操纵日期,则好像格式化程序返回到默认值。

my $d = Date.new(2019, 12, 25, formatter => { sprintf "%02d/%02d in %04d", .month, .day, .year });
# Outputs 12/25 in 2019

$d.later(:1day)
# Outputs 2019-12-26
Run Code Online (Sandbox Code Playgroud)

我希望在调用.later方法之后的输出为“ 2019年12月26日”。

当在GitHub上查看Date.pm6时-https: //github.com/rakudo/rakudo/blob/master/src/core/Date.pm6-我看到.later 方法使用.new创建了新的Date对象而不参考设置的格式化程序。即应该行151

self.new-from-daycount(self.daycount + $multiplier * $amount )
Run Code Online (Sandbox Code Playgroud)

宁愿像

self.new-from-daycount(self.daycount + $multiplier * $amount, &!formatter )
Run Code Online (Sandbox Code Playgroud)

如果是这样,不仅在.later,而且在.succ,.pred等地方,很多地方都缺少这种情况。

Eli*_*sen 7

看来这是对的调度中的一个疏忽,该调度new-from-daycount已通过以下方式修复:https : //github.com/rakudo/rakudo/commit/ac11774d73

认为这应该解决所有问题。如果没有,请在https://github.com/rakudo/rakudo/issues/new上发布问题。