Perl对象编程:从伪哈希到内向外对象的探索
1. 伪哈希(Pseudohashes)的问题
伪哈希的设计初衷是为了实现更好的编译时类型检查,从而提高运行时的访问速度,这一目标值得称赞。然而,它在实现过程中却导致了所有普通哈希和数组访问速度的下降。此外,除非使用方式完全正确,否则伪哈希会使对象的内存占用和访问时间翻倍。如果忘记为其容器变量指定类型(由于在Perl中通常不需要为变量指定类型,所以很容易出现这种情况),伪哈希的效率会特别低。而且,在继承层次结构中使用伪哈希时,还容易出现难以理解的错误。
由于伪哈希在Perl 5.005之前的版本中无法使用,在Perl 5.8中已被弃用,并将在Perl 5.10中完全从语言中移除,因此不建议使用伪哈希。如果当前代码中正在使用伪哈希,应计划将其从代码中移除。
2. 受限哈希(Restricted Hashes)的特点与不足
受限哈希是为了部分替代伪哈希而开发的机制。在Perl 5.8及更高版本中,通过调用 Hash::Util 模块提供的 lock_keys() 、 lock_value() 或 lock_hash() 子例程,可以将普通哈希转换为受限哈希。
- lock_keys() :锁定哈希的键后,该哈希将无法为除锁定时已存在的键之外的其他键创建条目。
- lock_value() :锁定哈希值后,该特定哈希条目的值将变为常量。
- lock_hash() :锁定整个哈希后
超级会员免费看
订阅专栏 解锁全文
1821

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



