Apariencia
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.