Sylveon.Memorize 1.1.0

A simple .NET Standard library to memoize a function with a single parameter

Install-Package Sylveon.Memorize -Version 1.1.0
dotnet add package Sylveon.Memorize --version 1.1.0
<PackageReference Include="Sylveon.Memorize" Version="1.1.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sylveon.Memorize --version 1.1.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Sylveon.Memorize, 1.1.0"
For F# scripts that support #r syntax, copy this into the source code to reference the package.

Memorize

A simple .NET Standard library to memoize a function with a single parameter

Examples

  • Memorize the result of a function taking a non-nullable object:
int MyComplexMathOperation(int i)
{
    Thread.Sleep(10000); // Sleep 10 seconds.
    return ++i;
}

var memoize = new Memorizer<int, int>(MyComplexMathOperation);
Console.WriteLine(memoize.Invoke(2));    // Takes some time
Console.WriteLine(memoize.Invoke(2));    // Instant
Console.WriteLine(memoize.Invoke(null)); // Compile error
  • Memorize the result of a function taking a nullable object:
// inb4 deleting this breaks React
string MySlowAndWeirdLeftPad(string str)
{
    Thread.Sleep(10000); // Sleep 10 seconds.
    return str == null ? "Hello" : str.PadLeft(10);
}

var memoize = new Memorizer<string, string>(MySlowAndWeirdLeftPad);
Console.WriteLine(memoize.Invoke(null));     // Takes some time
Console.WriteLine(memoize.Invoke(null));     // Instant
Console.WriteLine(memoize.Invoke("pad me")); // Also works

Additional utilities are provided for your convenience:

  • bool IsResultMemorized(TParam param): Verify if a result has been memorized
  • void ClearMemorizedResults(): Clear the cache
  • TResult GetMemorizedResult(TParam param): Get a memorized result
  • bool TryGetMemorizedResult(TParam param, out TResult result): Try getting a memorized result

Refer to the XML documentation for more info.

Memorize

A simple .NET Standard library to memoize a function with a single parameter

Examples

  • Memorize the result of a function taking a non-nullable object:
int MyComplexMathOperation(int i)
{
    Thread.Sleep(10000); // Sleep 10 seconds.
    return ++i;
}

var memoize = new Memorizer<int, int>(MyComplexMathOperation);
Console.WriteLine(memoize.Invoke(2));    // Takes some time
Console.WriteLine(memoize.Invoke(2));    // Instant
Console.WriteLine(memoize.Invoke(null)); // Compile error
  • Memorize the result of a function taking a nullable object:
// inb4 deleting this breaks React
string MySlowAndWeirdLeftPad(string str)
{
    Thread.Sleep(10000); // Sleep 10 seconds.
    return str == null ? "Hello" : str.PadLeft(10);
}

var memoize = new Memorizer<string, string>(MySlowAndWeirdLeftPad);
Console.WriteLine(memoize.Invoke(null));     // Takes some time
Console.WriteLine(memoize.Invoke(null));     // Instant
Console.WriteLine(memoize.Invoke("pad me")); // Also works

Additional utilities are provided for your convenience:

  • bool IsResultMemorized(TParam param): Verify if a result has been memorized
  • void ClearMemorizedResults(): Clear the cache
  • TResult GetMemorizedResult(TParam param): Get a memorized result
  • bool TryGetMemorizedResult(TParam param, out TResult result): Try getting a memorized result

Refer to the XML documentation for more info.

Release Notes

Remove the need to specify if parameter can be nullable

  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.1.0 649 1/17/2018
1.0.1 601 1/14/2018
1.0.0 525 1/14/2018