Tango
  • Introduction
  • Getting Started
    • Summary
    • From me, the Developer
    • What is Tango?
    • Where to start?
  • Installation
    • Based on NuGet
    • Manually
  • Fundamentals
    • Introduction
    • Using Pattern Matching
    • Option values
    • Either values
    • From void to Unit
    • Func and Action
    • Chainable operations in a Continuation flow
    • Currying and Partial Application
  • Functional
    • Introduction
    • Currying
    • Partial Application
    • Functional Extensions
    • QuickCast to Delegates
  • Operations
    • Introduction
    • Operations with Booleans
    • Operations with Integers
    • Operations with Decimals
    • Operations with Doubles
    • Operations with Strings
  • Types
    • Introduction
    • Unit
    • Option<T>
    • Either<TLeft, TRight>
    • Continuation<TFail, TSuccess>
  • Modules
    • Introduction
    • Option
      • Apply
      • AsEnumerable
      • Bind
      • Count
      • Exists
      • Filter
      • Fold
      • FoldBack
      • Iterate
      • Map
      • OfNullable
      • ToArray
      • ToList
      • ToNullable
    • Either
      • Exists
      • Iterate
      • Fold
      • FoldBack
      • Map
      • Swap
      • ToTuple
    • Continuation
      • AsContinuation
      • Resolve
      • Reject
      • All
    • Collection
      • Append
      • Choose
      • ChunkBySize
      • Collect
      • CompareWith
      • CountBy
      • Concat
      • Distinct
      • Empty
      • Exists
      • Exists2
      • Filter
      • FindIndex
      • Fold
      • Fold2
      • FoldBack
      • FoldBack2
      • ForAll
      • ForAll2
      • ForAll3
      • Head
      • HeadAndTailEnd
      • Range
      • Generate
      • Initialize
      • Iterate
      • Iterate2
      • IterateIndexed
      • IterateIndexed2
      • Map
      • Map2
      • Map3
      • MapIndexed
      • MapIndexed2
      • MapIndexed3
      • Partition
      • Permute
      • Pick
      • Reduce
      • ReduceBack
      • Replicate
      • Scan
      • Scan2
      • ScanBack
      • ScanBack2
      • Tail
      • TryFind
      • TryPick
      • Unzip
      • Unzip3
      • Zip
      • Zip3
  • Extensions
    • Introduction
    • Enum Extensions
    • EqualityComparer Builder
    • Modules as Extensions
Powered by GitBook
On this page

Was this helpful?

  1. Modules
  2. Either

Iterate

Apply the given function to Either<TLeft, TRight> value according to its state.

Parameters

Returns

Action<TRight> actionWhenRight

Action<TRight> actionWhenLeft

Either<TLeft, TRight> either

void

Usage

This function is an alternative to Map functions to apply an Action rather a Func delegate.

When Either IsRight

Either<string, int> either = 10;
either.Iterate(
    right => Console.WriteLine(right.ToString()),
    left => Console.WriteLine($"Hello {left}"));

//"10"

When Either IsLeft

Either<string, int> either = " World";
either.Iterate(
    right => Console.WriteLine(right.ToString()),
    left => Console.WriteLine($"Hello {left}"));

//"Hello World"

One sided approach

You can also use the IterateLeft and IterateRight to produce the same results, but with these methods the action is applied just to one of the possible values.

When the target type is different from Either current value the function will creates an Unit value.

IterateLeft when Either IsRight

Either<string, int> either = 10;
either.IterateLeft(left => Console.WriteLine($"Hello {left}"));
//

IterateLeft when Either IsLeft

Either<string, int> either = " World";
either.IterateLeft(
left => Console.WriteLine($"Hello {left}"));
//"Hello World"
PreviousExistsNextFold

Last updated 5 years ago

Was this helpful?