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

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

概述请你解释一下*显然*不一致的行为给我: 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: 8print a() * 2; # this prints: 8print 2 * a;   # this prints: 8print a * 2;   # this prints: 4

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

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

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

sub a () {2 + 2}

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

总结

以上是内存溢出为你收集整理的perl – 使用子程序乘法运算符的明显奇怪性全部内容,希望文章能够帮你解决perl – 使用子程序和乘法运算符的明显奇怪性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1267886.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存