Perl 函数详解:MRO、多调用、数值及废弃兼容函数
1. MRO 函数
MRO 函数与 Perl 类的方法解析顺序相关,以下是具体介绍:
- mro_get_linear_isa :返回给定存储库(stash)的 MRO 线性化结果。默认情况下,它返回 mro_get_linear_isa_dfs 的结果,除非该存储库使用了其他 MRO。返回值是一个只读的 AV* 。如果计划半永久存储返回值,需要调用 SvREFCNT_inc() 来增加引用计数,否则下次缓存失效时可能会被删除。
AV* mro_get_linear_isa(HV* stash)
- mro_method_changed_in :使给定存储库的所有子类的方法缓存失效,以便它们能注意到该存储库的变化。理想情况下,Perl 源代码中
mro.c之外的所有PL_sub_generation++实例都应替换为对该函数的调用。在以下两种情况下,需要在更改方法后调用此函数:
1. 从 XS 代码直接操作存储库的HV条目。
2. 将只读标量常量的引用赋值给存储库条目以创建常量子例程(如constant.pm所做的那样)。
此函数也可以通过纯 Perl 代码mro::method_changed_
超级会员免费看
订阅专栏 解锁全文
2306

被折叠的 条评论
为什么被折叠?



