date - Dateish 字符串的问题

标签 date mixins raku

此代码(用于检查当前目录的更改时间戳):

my $date = ".".IO.changed.DateTime.yyyy-mm-dd but Dateish; 
say $date;

产生错误:
«Ambiguous call to 'gist(Str+{Dateish}: )'; these signatures all match:␤:  (Str:D: *%_)␤:(Dateish:D:   │ avalenn
                 | *%_)␤  in block <unit> at <tmp> line 1␤␤»

没有 Dateish mix in ,字符串只是 2018-05-12 .使用任何其他类型的 Dateish函数,如 .week-year也会产生不同的错误:
«Str+{Dateish}␤Invocant of method 'Bridge' must be an object instance of type 'Int', not a type      │ a3r0
                 | object of type 'Int'.  Did you forget a '.new'?␤  in block <unit> at <tmp> line 1␤␤»

这是否只是意味着您不能将字符串与 Dateish 混合使用?我在几个小时内做了类似的事情,没有问题。

最佳答案

要回答你的问题,我们应该看看这个角色:

my role Dateish {
    has Int $.year;
    has Int $.month;     # should be int
    has Int $.day;       # should be int
    has Int $.daycount;
    has     &.formatter;

    ...
    multi method Str(Dateish:D:) {
        &!formatter ?? &!formatter(self) !! self!formatter
    }
    multi method gist(Dateish:D:) { self.Str }
    ...
}

所以,角色Dateish有几个属性,这些方法使用这些属性来计算它们的返回值。

当您这样做时$some-string but Dateish ,您没有做任何事情来初始化属性,因此使用它们的方法调用(可能是间接的)以有趣的方式失败。

您如何获得 Dateish来自 DateTime 的对象然后?那么,DateTime是一个,已经,或者你可以强制到 Date如果这是你想要的:
my $date = ".".IO.changed.DateTime.Date; say $date

您也可以尝试实例化 Dateish通过提供所有属性,但与仅使用 Date 相比,我没有看到任何优势如预期。

关于date - Dateish 字符串的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50309179/

相关文章:

php - 正则表达式中的可选字符

c++ - 向 C++ Mixins 添加工厂层次结构

raku - Perl6的Perlbrew

raku - Perl 6 中交替出现的文字正则表达式中的重复元素

date - 报告生成器3.0 : How to convert string representation of dates in mm/dd/yy format using CDate

java - 如何在 H2 中将周数格式化为所需格式

python - 如何在 Pandas 中对日期时间列使用条件逻辑?

css - 如何显示自定义函数使用位置的错误路径?

css - 通过 scss mixin 将 2 个 Microsoft 过滤器用于渐变和阴影

raku - 仅在使用 repl 时编译错误