0

我在我的基类中use Storable qw/nfreeze thaw/;,但我无法nfreeze在我的子类中访问。我在儿童班中称它为nfreeze($data).

谢谢。

4

1 回答 1

4

Storable::nfreeze并且Storable::thaw函数而不是方法——它们不期望特定类型的对象或包名称作为它们的第一个参数。通常,您直接调用这些子例程 ( nfreeze($data)) 而不是使用间接语法 ( $obj->thaw()),因此您不应期望它们位于继承的方法集中。

要在您的子类中使用这些函数,请将它们导入您的子包中

package ChildClass;
use Storable qw/nfreeze thaw/;

或使用其完全限定的子例程名称调用函数:

Storable::nfreeze($data);
BaseClass::thaw($data);

第二个调用有效,因为nfreeze/thaw已经被导入BaseClass命名空间。

于 2012-04-24T19:27:02.553 回答