[erlang-questions] Avoiding case nesting
Mon Sep 28 15:11:07 CEST 2009
On Mon, Sep 28, 2009 at 9:23 PM, Dale Harvey <harveyd@REDACTED> wrote:
> 2009/9/28 mayamatakeshi <mayamatakeshi@REDACTED>
>> On Mon, Sep 28, 2009 at 7:38 PM, Jayson Vantuyl <kagato@REDACTED> wrote:
>> > I believe that you can still use pattern matching. Something like:
>> > case String of
>> >> [ FirstPrefix | Tail ] -> do_this(Tail);
>> >> [ SecondPrefix | Tail ] -> do_that(Tail);
>> >> ...
>> >> _ -> didnt_match
>> >> end.
>> I tried like the above, but it will only work if the prefixes are single
>> characters like $a. If the prefix is a string, then it will not match
>> because it will become a list within a list.
> you can use
> case String of
> FirstPrefix ++ Tail -> do_this(Tail);
> SecondPrefix ++ Tail -> do_that(Tail);
> "a" ++ Tail -> do_that(Tail);
> to match lists
Thanks, however, in my case, the prefixes are variables set to strings and
not literal strings, so when I try the above it will not even compile: erlc
will complain with "illegal pattern". Only the last pattern ( "a" ++ Tail )
will pass compilation.
More information about the erlang-questions