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.
For more options, visit https://groups.google.com/d/optout.