Skip to content

Bind: encadenar operaciones ​

Usa Bind si la siguiente operación devuelve otro resultado. Así evitas un Result<Result<T>>.

csharp
using Greencore.Platform.Errors;
using Greencore.Platform.Results;
using Greencore.Platform.Results.Extensions;

var resultado = Result<int>.Ok(3).Bind(Reservar);
Console.WriteLine(resultado.Value); // Reserva para 3 unidades.

static Result<string> Reservar(int cantidad)
{
    return cantidad <= 5
        ? Result<string>.Ok($"Reserva para {cantidad} unidades.")
        : Result<string>.Fail(Error.Create("Stock insuficiente."));
}

Bind ejecuta la siguiente operación solo si hay éxito. Si el resultado inicial falla, propaga su error; si la siguiente operación falla, devuelve ese nuevo fallo.

La función no puede devolver null: se rechaza con InvalidOperationException. Sus excepciones se propagan. En un resultado sin valor, la función no recibe un valor de entrada.

Recuerda: Map devuelve un valor; Bind devuelve un resultado.

Siguiente: resolver las dos ramas con Match.

Uso personal limitado. Uso comercial sujeto a autorización escrita.