就Perl OO而言,具体到底是做->什么的?
例如,我打电话给主:
$result = a::b->mymethod( );
Run Code Online (Sandbox Code Playgroud)
在我定义的包中mymethod(),我使用以下内容:
my( $class ) = @_;
Run Code Online (Sandbox Code Playgroud)
在主要方面,我显然没有传递任何参数mymethod(),所以$class参数来自何处?有没有人对此有一个很好的解释或解释这个的文件?
perlobj文档的"方法调用"部分解释了.更重要的是我的.
方法调用
出于各种历史和其他原因,Perl提供了两种编写方法调用的方法.更简单和更常见的方法是使用箭头符号:
Run Code Online (Sandbox Code Playgroud)my $fred = Critter->find("Fred"); $fred->display("Height", "Weight");您应该已经熟悉
->运算符与引用的使用.实际上,由于$fred上面是对象的引用,因此您可以将方法调用视为另一种解除引用形式.无论是箭头的左侧,无论是引用还是类名,都将作为第一个参数传递给方法子例程.所以上面的代码大致相当于:
Run Code Online (Sandbox Code Playgroud)my $fred = Critter::find("Critter", "Fred"); Critter::display($fred, "Height", "Weight");Perl如何知道子程序所在的包?通过查看箭头的左侧,它必须是包名称或对象的引用,即已经祝福包裹的东西.无论哪种方式,这都是Perl开始寻找的包.如果该包没有具有该名称的子例程,则Perl开始在该包的任何基类中查找它,依此类推.