加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

内省 – 从内部访问例程的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.他们需要这样做会导致编译器选择任何包含各种优化的调用的例程,否则会丢弃发现参数所需的信息.这并不理想,未来很可能会发生变化 – 最有可能找到一种方法将|秘密捕获隐藏到签名或类似内容中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读