我正在使用Moops
,我希望这样的工作:
use Moops;
class A {
fun f {
print "yay,f!\n";
}
}
class B extends A {
fun g {
f();
}
}
B->g(); # should print 'yay, f!'
相反,这会产生:
Undefined subroutine &B::f called at static-functions-lexical-scope.pl line 11.
我可以通过继承Exporter
inA
和这样的use
语句来“解决”这个问题B
:
class A extends Exporter {
our @EXPORT = qw(f);
fun f {
print "yay,f!\n";
}
}
class B extends A {
use A;
fun g {
f();
}
}
这看起来有点笨拙,但如果A
在另一个文件中定义它会变得更糟。然后我必须在这样之外添加第二个use A
(require
不会做)B
:
use A;
class B extends A {
use A;
fun g {
f();
}
}
有没有办法让(导出的)函数的词法包含更优雅地工作?