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

perl – 使用子程序和乘法运算符的明显奇怪性

发布时间:2020-12-15 23:28:55 所属栏目:大数据 来源:网络整理
导读:请你解释一下*显然*不一致的行为给我: use strict;sub a { 2 + 2 };print 2 * a(); # this prints: 8print a() * 2; # this prints: 8print 2 * a; # this prints: 8print a * 2; # this prints: 4 谢谢你的回答,非常有帮助 – 我学到了很多东西. 解决方法
请你解释一下*显然*不一致的行为给我:

use strict;
sub a { 2 + 2 };
print 2 * a(); # this prints: 8
print a() * 2; # this prints: 8
print 2 * a;   # this prints: 8
print a * 2;   # this prints: 4

谢谢你的回答,非常有帮助 – 我学到了很多东西.

解决方法

在最后一个示例中,表达式被解析为(* 2),它使用glob参数* 2调用a,它是包变量* main :: 2的短名称

如果您希望将a解析为不带参数的函数,则需要将其声明为:

sub a () {2 + 2}

然后perl将按预期解析语句.事实上,如果你这样写,perl会检测到它是一个常量函数,并且会在每个被调用的地方内联4.

(编辑:李大同)

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

    推荐文章
      热点阅读