![]() |
1
23
C++机制与Perl机制没有太大不同:要使用继承,你需要两个类:基类和继承类。但你没有后代阶级。 你也缺少一个构造函数。与C++不同,Perl不会为您提供默认构造函数。 你的基类包含一个错误的语法,所以我想你在发布之前没有尝试过代码。 最后,正如tsee已经观察到的,您必须让Perl知道您是想要函数调用还是方法调用。 你真正想要的东西看起来像这样:
|
![]() |
2
10
你应该看看使用 Moose 这是Perl5的后现代对象系统。您可能会发现,与使用标准Perl OO语义相比,它更容易掌握。..尤其是当来自另一种OO语言时。 这是一个 Moose 你问题的版本。...
区别在于。...
所以这个例子只涵盖了驼鹿冰山的一角;-) |
![]() |
3
5
顺便说一句,没有什么好理由
|
![]() |
4
5
在我看来,你在这里混淆了两件事:面向对象和过程Perl。Perl OO有点“不同”(不是主流但可行)。 您的TestBase.pm模块似乎希望作为Perl对象(Perl oo风格)运行,但您的Perl脚本希望作为“普通”模块访问它。Perl的工作方式与C++不同(正如你所意识到的那样),所以你必须以不同的方式构造代码。请参阅达米安·康威的书中的解释(以及下面比我更聪明的代码)。 程序:
.
Perl OO
.
|
![]() |
5
4
Perl的继承 方法 ,而不是功能。这意味着你必须打电话
然而,你真正想要的是将该方法继承到一个适当的类中:
将当前包中的方法作为函数调用不会神奇地传入$self或“this”对象,也不会传入类名。在内部,
基本上最终被称为
内部。当然,这假设Class有一个名为“somemethod”的子例程/方法。如果没有,将检查Class的超类,如果这些超类也没有方法“somemethod”,则会出现致命错误。(同样的逻辑也适用于$obj->方法(“foo”)。) |
![]() |
6
1
OO语法使用
|
![]() |
Manny · 如何比较Perl中的字符串? 3 年前 |
![]() |
BioRod · 我不能用Perl打印键和值 3 年前 |
![]() |
user17227456 · Perl CLI代码无法追加字符串行 3 年前 |
![]() |
LearnToBeBetter · 读取文件,搜索字符串,打印字符串 3 年前 |
![]() |
KJ7LNW · 一些波斯语文本的宽字符印刷,但其他文本则没有 3 年前 |
![]() |
con · 如何搜索大型数据结构并返回一系列给出特定值的键/数组? 3 年前 |
![]() |
Pranay Nanda · 使用regex解析许可证文件 7 年前 |