【发布时间】:2012-02-13 06:50:58
【问题描述】:
在 perl 脚本中,为什么调用函数的方法有时会以不同的方式编写。我看到 &function,有时还有 function()。它们是否相同,而这只是一种想要炫耀的风格?如果它们相同,为什么它们都可用,难道不是一个就足够了吗?我猜这两种方法之间存在一些语义差异,可以将它们彼此区分开来......但是在什么样的情况下?
--- 由于超时原因我无法回答自己的问题——我正在更新问题部分中的答案。当我有机会更新答案块时,我会把它放在那里。
我在“Learning Perl”一书中找到了相关文本。不过,感谢您的提示。第 4 章:子程序——省略与号。
我对 perl 函数的 & 和 & 用法更感兴趣。如果在调用之前已经定义了子例程,则可以在调用函数时不使用 & 来调用子例程,类似于调用内置函数。 & 还用于区分内置函数和用户定义函数,如果要调用的函数使用与其中一个内置函数相同的名称,前提是它在被调用之前定义。
使用 () 只是为了证明将参数传递给子例程是合理的,而如果不使用,则当前参数的默认列表以 @_ 的形式传递。如果在 () 中为子例程指定了参数,则假定它是一个子例程并被调用,即使在解析时之前没有定义。
【问题讨论】:
-
参见 Perl 常见问题 7 中的 What's the difference between calling a function as &foo and foo()?。
-
嗨@manatwork,这解释了 &foo 和 &foo() 之间的区别,但是如果没有必要,为什么要使用 & 符号...什么时候需要?
-
在描述部分perlsub 列举了
&何时是可选的。 -
如果有
use strict;杂注,则不能调用之前未定义的子例程——通常应该有。 -
这可能属于 Stack Overflow,因为它不是 Unix 特定的。
标签: perl