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.

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.

Version History

Version Downloads Last updated
1.1.0 301 1/17/2018
1.0.1 257 1/14/2018
1.0.0 226 1/14/2018