是";我的";Perl中的函数?
我知道是";我的";Perl中的函数?,perl,Perl,我知道my用于声明块或文件的局部变量。我一直认为my是Perl中的一个关键字。但我刚刚被告知这实际上是一个函数。其中一个证明是perldoc将my放在“函数”部分下,请参阅 函数是如何声明局部变量的?my不是一个函数,它只是与函数(在perl文档中)组合在一起,因为它的工作方式与函数类似 如果你看,它说 下面是Perl的函数(包括看起来像函数的东西,比如一些关键字和命名运算符)按类别排列 然后再低一点 与范围界定相关的关键词 呼叫方,导入,本地,我的,我们的,包,状态,使用 具体来说,请注意此处
my
用于声明块或文件的局部变量。我一直认为my
是Perl中的一个关键字。但我刚刚被告知这实际上是一个函数。其中一个证明是perldoc
将my
放在“函数”部分下,请参阅
函数是如何声明局部变量的?my
不是一个函数,它只是与函数(在perl文档中)组合在一起,因为它的工作方式与函数类似
如果你看,它说
下面是Perl的函数(包括看起来像函数的东西,比如一些关键字和命名运算符)按类别排列
然后再低一点
与范围界定相关的关键词呼叫方
,导入
,本地
,我的
,我们的
,包
,状态
,使用
具体来说,请注意此处使用的是“关键字”而不是“函数”
因此,这意味着您将在下面找到一些非函数(例如关键字)
另一种说法是:如果perldoc中的“函数”下列出了某个对象,那么它不一定是一个函数——它可以是一个关键字或命名运算符,其作用类似于函数。是的,根据Perl(非常独特)的定义,my
是一个函数。的开头段落定义了“功能”:
本节中的函数可以用作表达式中的术语。它们分为两大类:列表运算符和命名一元运算符
my
是一个命名运算符。但它在两个方面很特别:
- 除了像函数一样运行(分配新变量并返回该变量),它还具有编译时效果
是一元运算符,但在使用参数时,它可以接受多个参数my…
另一方面,如果你问
my
是否是C定义的函数,那么答案是否定的my
不是C函数。无论是print
、open
、chr
,都不是。perlfunc中的所有内容都是一个操作符;它们都不是函数
最后,
print
、open
和chr
比my
更接近人们对函数的概念。更确切地说,很少有人会认为<代码>我的<代码>是一个函数。这更像是一个技术性的问题,而不是任何有意义的问题,因为它符合perfunc对功能的定义
另见:
import
(一个特殊的子例程)和qr
(一个操作符)也列在那里。@daxim这本书也说my
是一个函数,但没有给出太多解释。那本书也错了<代码>我的绝对不是一个函数。你怎么称呼它重要吗?请注意,local
这个词在Perl中也有特殊的含义:)@briandfoy我不在乎如何称呼它。但如果它是一个函数,我想知道它是如何工作的。既然不是,那我就没问题了。嗯,我以为调用者是一个函数。至少它的行为像一个函数,而不像一个关键字/运算符。@Dallaylaen,嘿,perldoc的话,不是我的:)。但我同意调用者的行为更像一个function.Re“这意味着您将在Perl函数a-Z下找到一些非函数(例如关键字)”。它们都是命名运算符(如页面第二句所述),这意味着它们都是关键字。(好吧,它们可以是保留字,但Perl没有。)