【问题标题】:Do will traits only apply to objects?特质是否只适用于对象?
【发布时间】:2021-07-30 12:17:37
【问题描述】:

this question 的尾部,我正在尝试使用这个(打高尔夫球的)代码使will 特征起作用:

sub show-value( $a-var ) {
    say "Value of {$a-var.^name} is ", $a-var.gist;
}

sub do-stuff () {
    ENTER { say "Going in"; }
    our $bar will enter { show-value($_) };
    $bar = "baz";
    LEAVE { say "Leaving"; }
}

do-stuff();

这只是打印“Going in”。如果您在全局范围内执行此操作,它(不)以相同的方式工作。请注意,这几乎是documentation example 的直接实现。

【问题讨论】:

    标签: traits raku


    【解决方案1】:

    你还没有记下你的 Rakudo 版本。听起来像是今年引入的一个错误。

    Running the same code using glot.io:

    v2021.02.1
    Going in
    Value of Any is (Any)
    Leaving
    

    【讨论】:

    • 对,最后一个版本,2021.07
    • FWIW,我认为没有错误。对 will 特征的实际作用存在严重误解。
    • @ElizabethMattijsen 您是指文档中的示例吗?没有太多的工作,你知道...
    【解决方案2】:

    2021.07 我得到:

    Going in
    Value of Any is (Any)
    Leaving
    

    一个更清晰的例子可能是:

    my $bar will enter { $_ = 42 }
    say "bar = $bar";  # bar = 42
    

    【讨论】:

    • 对,我其实用的是2021.06。所以这只是那个版本的回归?
    猜你喜欢
    • 2016-01-25
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多