首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >perl6 subs是真的有词法作用域,还是有额外的?

perl6 subs是真的有词法作用域,还是有额外的?
EN

Stack Overflow用户
提问于 2019-06-27 01:43:35
回答 1查看 121关注 0票数 7

如果我有一个如下所示的块:

代码语言:javascript
复制
{
   say $myVar;
   my $myVar=1;
}

我得到了预期的错误:

代码语言:javascript
复制
Variable '$myVar' is not declared 

但是以类似的方式使用sub

代码语言:javascript
复制
{
    test();
    my sub test() {
        say "Hello";
    }
}

此命令运行时不会出现错误,并打印:

代码语言:javascript
复制
Hello

在封闭的块之外,$myVartest都不可见,因此从这个意义上说,它们都是词法作用域。

由于test在代码中的位置之前已定义并可用,因此sub必须将其声明“提升”到块的顶部。然而,我找不到一个参考资料来支持这一点。

提出这个问题的原因是查看了perl中的词法作用域my subs,它在上面第二种情况的perl版本中给出了一个“未定义的子例程”错误。在我对词法作用域的理解中,这是我所期望的。

我不假思索地使用它。编写一些测试代码,稍后将其包装到我的文件底部声明的sub中,并调用文件中前面的sub。一切正常!

这确实引出了一个问题: perl6 subs真的在这种意义上限定了词法范围吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56778434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档