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

Exists

Returns true if the given predicate functions return true when applied to either value. Otherwise, returns false.

ParĂ¢metros

Retorno

Func<TRight, bool> predicateWhenRight

Func<TLeft, bool> predicateWhenLeft

Either<TLeft, TRight> either

bool

Usage

When the Either IsLeft, the result will be the return of predicateWhenLeft function, otherwise will be the return of predicateWhenRight.

When Either IsRight and predicate returns true

Either<string, int> either = 20;
bool result = 
    either.Exists(
        right => right == 20,
        left => left == "Hello World");

//result = true

When Either IsLeft and predicate returns true

Either<string, int> either = "Hello World";
bool result = 
    either.Exists(
        right => right == 20,
        left => left == "Hello World");

//result = true

When Either IsRight and predicate returns false

Either<string, int> either = 15;
bool result = either.Exists(
right => right == 20,
left => left == "Hello World");
//result = false

One sided approach

You can also use the ExistsLeft and ExistsRight to produce the same results, but with these methods the predicated is applied just to one of the possible values.

When the target type is different from Either current value the result always will be false

ExistsRight when Either IsRight

Either<string, int> either = 20;
bool result = either.ExistsRight(right => right == 20);

//result = true

ExistsLeft when Either IsRight

Either<string, int> either = 20;
bool result = either.ExistsLeft(left => left == "Hello World");

//result = false
PreviousEitherNextIterate

Last updated 5 years ago

Was this helpful?