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

ToTuple

Converts the Either<TLeft, TRight> to a Tuple<T1,T2> where T1 and T2 are Option<TLeft> and Option<TRight> respectively.

Parameters

Returns

Either<TLeft, TRight> either

(Option<TLeft> Left, Option<TRight> Right)

Usage

This method is usually used to get the two possible values of an Either type simultaneously.

When Either IsLeft

Either<string, int> either = "Hello";
(Option<string> Left, Option<int> Right) tupleResult =
either.ToTuple();

//tupleResult.Left.IsSome = true
//tupleResult.Left.Some = "Hello"

//tupleResult.Right.IsSome = false
//tupleResult.Right.IsNone = true

One sided approach

You can also use the ToOptionLeft and ToOptionRight to produce the same results, but with these methods you will be able to get just to one of the possible values.

ToOptionLeft when Either IsLeft

Either<string, int> either = "Hello";
Option<string> leftResult = either.ToOptionLeft();

//leftResult.IsSome = true
//leftResult.Some = "Hello"

ToOptionRight when Either IsLeft

Either<string, int> either = "Hello";
Option<int> rightResult = either.ToOptionRight();
//rightResult.IsSome = false
//rightResult.IsNone = true
PreviousSwapNextContinuation

Last updated 5 years ago

Was this helpful?