Could be a binary to match to/against, a tuple that defines some internal 
format, etc...

On Tuesday, August 30, 2016 at 11:53:49 PM UTC-6, Michele Balistreri wrote:
>
> Macro would also be possible, but in that case you would have to require 
> the module to use its constants. I agree however that being useable in 
> guards is a good point. PRs are always welcome. 
>
> Regarding allowing non-integer values, I do not know if it makes much 
> sense. The entire point of defining constants this way is to be able to 
> interface with external services/serialization. If you can use Elixir terms 
> then you probably do not need this. Or am I missing something?
>
> On Tuesday, August 30, 2016 at 5:14:19 PM UTC+3, OvermindDL1 wrote:
>>
>> I actually do use a lot of `defmacro something, do: 42` for enums 
>> operating with a remote system, this would be convenient.  :-)
>>
>> Have you thought about making it a macro (be sure to escape the return in 
>> case they want the value to be a tuple or so), that way it can be used in 
>> more areas and in matching?
>>
>> On Monday, August 29, 2016 at 11:52:44 PM UTC-6, Michele Balistreri wrote:
>>>
>>> Hi all,
>>>
>>> after reading the topic at 
>>> http://stackoverflow.com/questions/33851536/how-do-you-define-constants-in-elixir-modules
>>>  
>>> I decided to use the approach taken by wxErlang. I found this to be a 
>>> little verbose, especially since I also needed a list of all constants and 
>>> an easy way to convert from the integer value to the associated atom.
>>>
>>> So I created the const package, which allows you to write this:
>>>
>>> defmodule Status do
>>>   use Const, [:queued, :processed, :sent]
>>> end
>>>
>>> and obtain this
>>>
>>> defmodule Status do
>>>   def queued, do: 0
>>>   def processed, do: 1
>>>   def sent, do: 2
>>>   def all, do: [queued: 0, processed: 1, sent: 2]
>>>   def by_value(val) do
>>>     # returns the atom from the integer value. In case of duplicated 
>>> values, the fist
>>>     # associated atom is returned
>>>   end
>>> end
>>>
>>> You can also give a keyword list if you need specific values, and even a 
>>> list where some elements are just atoms and some are tuples. The behavior 
>>> in this case will be like for C enums.
>>>
>>> More details at: https://github.com/bitgamma/const
>>>
>>> Hope it can be useful!
>>>
>>> Regards,
>>> Michele Balistreri
>>> Bitgamma OÜ
>>>
>>

-- 
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 elixir-lang-talk+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-talk/1c396e2c-3156-4b25-ad36-d8b5280ad7c5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to