有谁知道为什么TWEAK例程在BUILD例程之前被执行?

蒂莫西·尼尔森(Timothy Nelson)

最小代码:

 #!/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月)。

谢谢大家的协助!

科幻小说家

一个快速实验向缺少示例的每个示例类添加TWEAKBUILD方法,显示调用顺序为Widget::BUILD-> Widget::TWEAK-> File::BUILD-> File::TWEAK

因此,我认为问题出在文档的措辞上:“在调用BUILD方法之后,将调用名为TWEAK的方法(如果存在的话),并使用传递给new的所有命名参数。”

我想,这应该有可能是“BUILD方法被调用后为每个类,被称为命名TWEAK方法该类,如果存在,再次与所有传递给新的命名参数。”

然后,这将记录似乎正在发生的事情。

注意:自回答此问题以来,文档已更新以反映代码的运行方式。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有谁知道为什么“之前”包括完成日期?

有谁知道为什么我的 Bootstrap 4 订单类不起作用?

有谁知道为什么IRB会在块中给出语法错误?

有谁知道为什么我的AngularJS指令无法按预期显示?

有谁知道为什么页面重新加载

有谁知道为什么在 Kaggle 中出现 BeautifulSoup Connection-error

有谁知道为什么imagettftext无法打开字体文件

当我全屏时,我的桌子在移动。有谁知道为什么?

不同站点的不同字段数据,有谁知道为什么?

有谁知道为什么我的页脚没有按照我的 CSS 描述显示?

有谁知道为什么这个数组初始化语句不起作用?

有谁知道如何执行水平 xlookup

有谁知道为什么这个功能没有循环运行?仅呈现了一个YouTube视频

有谁知道为什么res.download每次都会给我的下载文件一个随机名称?

有谁知道为什么这会一直崩溃,当我添加平均值时它开始崩溃

有谁知道为什么在使用 Python (Locust) 打开 JSON 文件时在 Jenkins 中出现文件未找到错误?

有谁知道为什么@Valid 会在 javax.validation 中失败并与 spring 启动器验证一起使用

(已解决)有谁知道我的程序为什么会崩溃?

有谁知道为什么apt-cacher-ng总是下载一个索引文件(Packages.gz),即使它存在于apt-cacher-ng的缓存中?

我正在使用转发器将标签动态添加到 asp.net 页面,但由于某种原因,文本垂直堆叠。有谁知道为什么会这样?

有谁知道如何让tdb2.dump命令实际执行任何操作

有谁知道这段代码有什么问题?

有谁知道此代码有什么问题吗?

有谁知道它应该是什么角度?

有谁知道这实际上是什么?

有谁知道这个日志输出是什么意思

有谁知道survobject中n和层之间的区别是什么?

有谁知道 Azure DevOps Epic 中的“努力”字段是什么?

有谁知道如何让SonarQube分析CoffeeScript?