a sequence of object/quotation pairs, with an optional quotation at the end
Outputs None
Word description Compares obj against the first element of every pair, evaluating the first element if it is a callable. If a pair matches, obj is removed from the stack and the second element of that pair (which must be a quotation) is called.
If the last element of the assoc is a quotation, that quotation is the default case. The default case is called with the obj on the stack, if there is no other case matching obj.
If all the cases have failed and there is no default case to execute, a no-case error is raised.
The following two phrases are equivalent:
{ { X [ Y ] } { Z [ T ] } } case
dup X = [ drop Y ] [ dup Z = [ drop T ] [ no-case ] if ] if
Errors no-case if the input matched none of the options and there was no trailing quotation.
Examples
USING: combinators io kernel ;
IN: scratchpad
SYMBOLS: yes no maybe ;
maybe {
{ yes [ ] } ! Do nothing
{ no [ "No way!" throw ] }
{ maybe [ "Make up your mind!" print ] }
[ drop "Invalid input; try again." print ]
} case Make up your mind!