Why not use atoms? Atoms are precisely that: constants.
*José Valim* www.plataformatec.com.br Skype: jv.ptec Founder and Director of R&D On Sun, May 22, 2016 at 12:16 PM, Nytz12 <[email protected]> wrote: > Hi > > I use the following pattern to define cross module constants > > defmodule Visitor do > > defmodule FilterTypes do > def c_GREATER_THAN, do: "greater_than" > def c_LESS_THAN, do: "less_than" > def c_IS, do: "is" > def c_IS_NOT, do: "is_not" > end > ... > > Which lets me do something like this from other modules > > Visitor.FilterTypes.c_GREATER_THAN # == "greater than" > > Problem is that I just discored that these 'constants', which are really > function calls, cannot be used to do pattern match like: > > def filter(query, filter, field, value) do > case filter do > FilterTypes.c_GREATER_THAN -> greater_than(query, field, value) > FilterTypes.c_LESS_THAN -> less_than(query, field, value) > FilterTypes.c_IS -> is(query, field, value) > FilterTypes.c_IS_NOT -> is_not(query, field, value) > _ -> {:error, "unknown filter", filter} > end > end > > Is there a better approach i'm missing? > > -- > You received this message because you are subscribed to the Google Groups > "elixir-lang-talk" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elixir-lang-talk/ace6b869-dfce-4d3f-aeeb-2d9bc4583f03%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-talk/ace6b869-dfce-4d3f-aeeb-2d9bc4583f03%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "elixir-lang-talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-talk/CAGnRm4KmHUN5PHYgoV4hT9tyOnN--o9ysuRoofi5V%2B%3DfJSth8Q%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
