gpt4 book ai didi

object - 有谁知道为什么 TWEAK 例程在 BUILD 例程之前被命中?

转载 作者:行者123 更新时间:2023-12-03 16:55:36 26 4
gpt4 key购买 nike

最小代码:

 #!/usr/bin/raku

class Widget {
submethod TWEAK(:$content, :$styles) {
say "t1\n";
}
}

class File is Widget {
submethod BUILD() {
say "b1";
}
}

my $xml = File.new();
和输出:
 t1

b1
相关文档在 https://docs.raku.org/language/objects#Object_construction .我引用:“在调用 BUILD 方法后,调用名为 TWEAK 的方法(如果存在),再次使用传递给 new 的所有命名参数”。
我正在使用 Fedora 32 附带的 rakudo 版本(rakudo-0.2020.02-1.fc32.x86_64 所以可能是今年 2 月)。

最佳答案

添加 TWEAK 的快速实验和 BUILD缺少它们的每个示例类的方法显示调用顺序是 Widget::BUILD -> Widget::TWEAK -> File::BUILD -> File::TWEAK .
所以我认为问题在于文档的措辞“在调用 BUILD 方法之后,调用名为 TWEAK 的方法(如果存在),再次将所有命名参数传递给 new。”
我认为这可能是“在为每个类调用 BUILD 方法之后,为该类调用名为 TWEAK 的方法(如果存在),再次将所有命名参数传递给 new。”
这将记录似乎正在发生的事情。
注意:自从回答这个问题以来,文档已经更新以反射(reflect)代码的运行方式。

关于object - 有谁知道为什么 TWEAK 例程在 BUILD 例程之前被命中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64103610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com