コード例 #1
0
        public SafePipeline <TNewSuccess, TFailure> Select <TNewSuccess>(
            Func <TSuccess, TNewSuccess> fn)
        {
            async Task <Result <TNewSuccess, TFailure> > CombineExpressions()
            {
                var result = await Expression();

                return(result.Map(fn));
            }

            return(CreateSafePipeline.With(CombineExpressions));
        }
コード例 #2
0
        public SafePipeline <TNewSuccess, TFailure> Select <TNewSuccess>(
            Func <TSuccess, Task <TNewSuccess> > fn)
        {
            async Task <Result <TNewSuccess, TFailure> > CombineExpressions()
            {
                var result = await Expression();

                return(await result.MapAsync(async value => await fn(value)));
            }

            return(CreateSafePipeline.With(CombineExpressions));
        }
コード例 #3
0
        public SafePipeline <TNewSuccess, TFailure> SelectMany <TNewSuccess>(
            Func <TSuccess, SafePipeline <TNewSuccess, TFailure> > fn)
        {
            async Task <Result <TNewSuccess, TFailure> > CombineExpressions()
            {
                var result = await Expression();

                return((await result.Map(value => fn(value))
                        .MapAsync(async safePipeline => await safePipeline.Flatten()))
                       .Bind(innerResult => innerResult));
            }

            return(CreateSafePipeline.With(CombineExpressions));
        }