内省 – 从内部访问例程的Capture
发布时间:2020-12-15 22:05:31 所属栏目:大数据 来源:网络整理
导读:一旦被调用,访问子程序Capture的语法是什么? self仅适用于对象, ?ROUTINE 指静态例程,而不是其曾调用的状态.首先,是否可以从内部访问例程的Capture?如果是这样,访问它的语法是什么?我看过 related Synopse但我找不到办法,如果有的话. 解决方法 没有办法完
一旦被调用,访问子程序Capture的语法是什么? self仅适用于对象,
&?ROUTINE 指静态例程,而不是其曾调用的状态.首先,是否可以从内部访问例程的Capture?如果是这样,访问它的语法是什么?我看过
related Synopse但我找不到办法,如果有的话.
解决方法
没有办法完全按照你的要求去做.虽然概念上的参数是通过形成一个包含它们的Capture对象来传递的,然后由签名解包,对于大多数调用,没有Capture真正存在.由于Perl 6中的每个操作符都是多调度子例程调用,因此调用的性能很重要,并且语言设计使得实现有足够的空间来作弊以实现可接受的性能.
但是,可以明确要求捕获: sub foo(|c ($a,$b)) { say c.perl; } foo(1,2); 这会将参数捕获到c中,然后将它们解压缩到$a和$b中,强制执行该内部签名. 有人可能会发现像callame这样的东西确实找到了一种方法来访问传递它们的参数,即使签名中没有出现Capture.他们需要这样做会导致编译器选择任何包含各种优化的调用的例程,否则会丢弃发现参数所需的信息.这并不理想,未来很可能会发生变化 – 最有可能找到一种方法将|秘密捕获隐藏到签名或类似内容中. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |