gpt4 book ai didi

introspection - 从内部访问例程的捕获

转载 作者:行者123 更新时间:2023-12-04 13:56:44 29 4
gpt4 key购买 nike

调用子例程 Capture 后访问它的语法是什么? self仅适用于对象和 &?ROUTINE 指的是静态例程,而不是其一旦被调用的状态。那么首先,是否可以访问例程的 Capture从内部?如果是这样,访问它的语法是什么?我看过 related Synopse但我找不到办法,如果有的话。

最佳答案

没有办法完全按照你的要求去做。虽然从概念上讲,参数是通过形成 Capture 来传递的。持有它们的对象,然后由签名解包,对于大多数调用 no Capture曾经真的存在过。由于 Perl 6 中的每个运算符都是一个多分派(dispatch)子例程调用,因此调用的性能很重要,并且语言设计使得实现有足够的空间作弊以获得可接受的性能。

可以明确要求 Capture , 然而:

sub foo(|c ($a, $b)) { say c.perl; }
foo(1, 2);

这会将参数捕获到 c然后将它们也解压到 $a$b ,强制执行该内部签名。

人们可能会意识到 callsame 之类的东西确实找到了一种方法来访问参数以传递它们,即使签名中没有出现 Capture。他们这样做的需要导致编译器选择任何包含 callsame 的例程。出于各种优化,否则会丢弃发现参数所需的信息。这并不理想,而且很可能在 future 会发生变化——很可能是通过找到一种偷偷摸摸 |SECRET-CAPTURE的方法。签名或类似的。

关于introspection - 从内部访问例程的捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49481186/

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