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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |