示例#1
0
    public static Func <A, TR> AsCacheable <A, TR>(this Func <A, TR> function, out IFunctionCache cache)
    {
        var autocache = new AutoCache <A, TR>();

        cache = autocache;
        return(a => autocache.IsCached(a) ?
               autocache.GetCachedValue(a) :
               autocache.AddCachedValue(a, function(a)));
    }
示例#2
0
    public static Func <A, B, TR> AsCacheable <A, B, TR>(this Func <A, B, TR> function, out IFunctionCache cache)
    {
        var autocache = new AutoCache <OpaqueKey <A, B>, TR>();

        cache = autocache;
        return((a, b) =>
        {
            var key = new OpaqueKey <A, B>(a, b);
            return autocache.IsCached(key)
                                      ? autocache.GetCachedValue(key)
                                      : autocache.AddCachedValue(key, function(a, b));
        });
    }