Two things 1: That doesn't solve the issue of sharing constants between modules 2: I use strings because I match it against user supplied input that I do not want to convert to atoms
Correct me if im missing something Mads On Monday, May 23, 2016 at 5:45:30 PM UTC+2, José Valim wrote: > > 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] > <javascript:>> 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] <javascript:>. >> 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/41c6ba14-9611-4f8b-b43f-bc72ee336b0d%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
