对象、模块及包

优质
小牛编辑
125浏览
2023-12-01

包基础

  • 包是方法的集合
  • 具有自己的命名空间
  • 包方法能被导出或直接调用
Foo::bar()
Foo->bar()
bar() (如果 Foo 已导出它)

模块基础

  • 模块是包含一个或多个包的文件
  • 多数人交替使用模块和包

对象基础

  • 对象是被 bless 的哈希引用(不必是哈希引用,但它最常见)
  • bless 将单个类赋给对象
  • 对象可被重新 bless

1;

  • 模块必须以真值结束
  • 不必是 1
  • 包没有相同的限制

@ISA

Perl 的对象继承方法使用 @ISA 来决定模块继承自什么类。多年前,通过直接 修改 @ISA 声明继承。现在,多数程序使用 base 编译指令声明继承。

下列代码是等效的:

package Foo;
require Wango;
@ISA = ( "Wango" );

package Foo;
use base "Wango";