# FirstCase

FirstCase[{e1,e2,},pattern]

gives the first ei to match pattern, or Missing["NotFound"] if none matching pattern is found.

FirstCase[{e1,},patternrhs]

gives the value of rhs corresponding to the first ei to match pattern.

FirstCase[expr,pattern,default]

gives default if no element matching pattern is found.

FirstCase[expr,pattern,default,levelspec]

finds only objects that appear on levels specified by levelspec.

FirstCase[pattern]

represents an operator form of FirstCase that can be applied to an expression.

# Details and Options

• The first argument to FirstCase need not have head List and can be an association.
• FirstCase[expr,pattern:>rhs] evaluates rhs only when the pattern is found.
• In FirstCase[{e1,e2,},pattern,default], default is only evaluated if none of the ei match.
• FirstCase[pattern][expr] is equivalent to FirstCase[expr,pattern].
• FirstCase uses standard level specifications:
•  n levels 1 through n Infinity levels 1 through Infinity {n} level n only {n1,n2} levels n1 through n2
• The default value for levelspec in FirstCase is {1}.
• A positive level n consists of all parts of expr specified by n indices.
• A negative level -n consists of all parts of expr with depth n.
• Level -1 consists of numbers, symbols, and other objects that do not have subparts.
• Level 0 corresponds to the whole expression.
• With the option setting , FirstCase looks at heads of expressions and their parts.
• FirstCase traverses the parts of expr in a depth-first order, with leaves visited before roots.

# Examples

open allclose all

## Basic Examples(3)

Find the first element in a list matching an integer:

Find the first non-integer:

Return the x from inside the first f[x_] matched:

Pick an element from an Association:

## Scope(7)

Use the operator form of Cases:

Find the first order pair:

Find its sum:

Pick out the first nonzero element:

Use :> to evaluate only after explicit elements have been found:

Specify a custom default value:

Examine the elements of a matrix using a level specification:

Pick elements from nested associations:

## Options(1)

Find a symbol among the elements of an expression:

Also include the head of the expression in the search:

## Properties & Relations(4)

The default value is only evaluated if needed:

FirstCase returns only the first match:

Cases returns all matches:

FirstCase can be implemented with a combination of Cases and Replace:

FirstCase is similar to SelectFirst except that it uses a pattern instead of a function:

Select the first list that has a sum of elements less than 10:

Use SelectFirst to get the same result:

## Possible Issues(1)

A rule transforms the matching element into its right side:

Use HoldPattern to treat the rule itself as a pattern:

Wolfram Research (2014), FirstCase, Wolfram Language function, https://reference.wolfram.com/language/ref/FirstCase.html.

#### Text

Wolfram Research (2014), FirstCase, Wolfram Language function, https://reference.wolfram.com/language/ref/FirstCase.html.

#### CMS

Wolfram Language. 2014. "FirstCase." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/FirstCase.html.

#### APA

Wolfram Language. (2014). FirstCase. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FirstCase.html

#### BibTeX

@misc{reference.wolfram_2024_firstcase, author="Wolfram Research", title="{FirstCase}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/FirstCase.html}", note=[Accessed: 13-August-2024 ]}

#### BibLaTeX

@online{reference.wolfram_2024_firstcase, organization={Wolfram Research}, title={FirstCase}, year={2014}, url={https://reference.wolfram.com/language/ref/FirstCase.html}, note=[Accessed: 13-August-2024 ]}