top
up

4.12Simple Dispatch: case πŸ”— i

The case form dispatches to a clause by matching the result of an expression to the values for the clause:

(case expr
[(datum...+)body...+]
...)

Each datum will be compared to the result of expr using equal? , and then the corresponding bodys are evaluated. The case form can dispatch to the correct clause in O(log N) time for N datums.

Multiple datums can be supplied for each clause, and the corresponding bodys are evaluated if any of the datums match.

Example:
> (let ([v(random 6)])
(printf "~a\n"v)
(case v
[(0)'zero]
[(1)'one]
[(2)'two]
[(345)'many]))

2

'two

The last clause of a case form can use else , just like cond :

Example:
> (case (random 6)
[(0)'zero]
[(1)'one]
[(2)'two]
[else 'many])

'many

For more general pattern matching (but without the dispatch-time guarantee), use match , which is introduced in Pattern Matching.

top
up

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /