# Scan

Scan[f,expr]

evaluates f applied to each element of expr in turn.

Scan[f,expr,levelspec]

applies f to parts of expr specified by levelspec.

Scan[f]

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

# Details and Options

• Scan[f,expr] discards the results of applying f to the subexpressions in expr. Unlike Map, Scan does not build up a new expression to return.
• You can use Return to exit from Scan. Return[ret] causes the final value of Scan to be ret. If no explicit return values are specified, the final result from Scan is Null.
• You can also use Throw to exit from Scan. »
• Scan is useful in carrying out an operation on parts of expressions where the operation has a "side effect", such as making an assignment.
• Scan 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 Scan 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 , Scan includes heads of expressions and their parts. »
• Scan traverses the parts of expr in a depth-first order, with leaves visited before roots.
• If expr is an Association object, Scan[f,expr] applies f only to the values in the association.
• If expr is a SparseArray object, Scan[f,expr] applies f only to the values or subarrays that explicitly appear in expr.
• Scan[f][expr] is equivalent to Scan[f,expr].

# Examples

open allclose all

## Basic Examples(6)

 In[1]:=
 In[1]:=

Scan elements of an Association:

 In[1]:=

Scan elements up to the second level:

 In[1]:=

Scan elements including the 0 level:

 In[1]:=

Use the operator form of Scan:

 In[1]:=