《高阶Perl》——3.5 MEMOIZE模块

    xiaoxiao2022-06-23  187

    3.5 MEMOIZE模块

    本书不是关于Perl模块的内部细节的,而是关于一些Memoize模块内部使用的并和稍后要做的事情有直接联系的技术,所以现在简短地介绍一下。

    Memoize得到一个函数名(或引用)作为它的参数。它制造一个新的函数,后者维护一个缓存并在其中查找它的参数。如果新的函数在缓存里找到了参数,就返回缓存的值;如果没找到,就调用原始函数,把返回的值保存入缓存,并把它返回给原始的主调者。

    制造完这个新的函数,Memoize就把它装入Perl的符号表以代替原始的函数,那样当你认为你在调用原始函数的时候,其实你得到了新的带缓存管理的函数。

    如果不去探究真实的Memoize模块的内部,即一个350行的怪物,那么将看一个小的、削减过的记忆器。要去除的最重要的东西是处理Perl符号表的代码部分(手动处理)。取而代之的是,我们将有一个memoize函数,它的参数是我们想要使之带记忆的子例程的引用,且它返回一个指向带记忆的版本(即缓存管理函数)的引用:

    ### Code Library: memoize sub memoize { my ($func) = @_; my
    转载请注明原文地址: https://yun.8miu.com/read-15975.html

    最新回复(0)