Defconst v0.2.5 Defconst View Source
Define constants and enum with use in guards
Define a contant
defmodule ConstType do
use Defconst
defconst :one, 1
defconst :two, 2
end
Define an enum with default values
defmodule EnumType1 do
use Defconst
defenum [
:zero,
:one,
:two
]
end
Define an enum with explicit values
defmodule EnumType2 do
use Defconst
defenum [
{:one, 1},
{:nine, 9},
:ten
]
end
Link to this section Summary
Link to this section Functions
Define constant
Examples:
iex> defmodule ConstType do
...> use Defconst
...>
...> defconst :one, 1
...> defconst :two, 2
...> end
iex> defmodule ConstUse do
...> require ConstType
...>
...> def const_value(x) do
...> case x do
...> ConstType.one -> "one"
...> ConstType.two -> "two"
...> _ -> "unknown"
...> end
...> end
...>
...> def const_guard(x) when x == ConstType.two do
...> "two"
...> end
...> end
iex> ConstType.constants
[{:one, 1}, {:two, 2}]
iex> ConstUse.const_value(1)
"one"
iex> ConstUse.const_guard(2)
"two"
Link to this macro
defenum(constants, quoted_generator \\ quote do Defconst.Enum.DefaultGenerator end)
View Source (macro)Defines an enum with specified constant names and optional values
Examples:
iex> defmodule EnumType1 do
...> use Defconst
...>
...> defenum [
...> :zero,
...> :one,
...> :two
...> ]
...> end
iex> defmodule EnumUse1 do
...> require EnumType1
...>
...> def enum_value(x) do
...> case x do
...> EnumType1.zero -> "zero"
...> EnumType1.one -> "one"
...> EnumType1.two -> "two"
...> _ -> "unknown"
...> end
...> end
...>
...> def enum_guard(x) when x == EnumType1.two do
...> "two"
...> end
...> end
iex> EnumType1.constants
[zero: 0, one: 1, two: 2]
iex> EnumUse1.enum_value(1)
"one"
iex> EnumUse1.enum_guard(2)
"two"
iex> defmodule EnumType2 do
...> use Defconst
...>
...> defenum [
...> {:zero, "zero"},
...> {:one, 1},
...> {:nine, 9},
...> :ten
...> ]
...> end
iex> defmodule EnumUse2 do
...> require EnumType2
...>
...> def enum_value(x) do
...> case x do
...> EnumType2.zero -> "zero"
...> EnumType2.one -> "one"
...> EnumType2.nine -> "nine"
...> EnumType2.ten -> "ten"
...> _ -> "unknown"
...> end
...> end
...>
...> def enum_guard(x) when x == EnumType2.ten do
...> "ten"
...> end
...> end
iex> EnumType2.constants
[zero: "zero", one: 1, nine: 9, ten: 10]
iex> EnumUse2.enum_value(1)
"one"
iex> EnumUse2.enum_guard(10)
"ten"