dimitarvp
Can we import types and guards from another module?
Given this module:
defmodule A do
@type size :: pos_integer()
defguard is_size(x) when is_integer(x) and x > 0
def default_size(), do: 1
end
…how do we make the below work without prefixes?
defmodule B do
@type t :: %__MODULE__{size: size()}
defstruct [size: default_size()]
def put_size(opts, size) when is_list(opts) and is_size(size), do: Keyword.put(opts, :size, size)
end
Tried import A and require A, both don’t get the job done.
What elementary Elixir lesson I managed to forget?
Marked As Solved
NobbZ
You should be able to import is_size/1 just by doing import A(, only: [is_size: 1]).
You can not import types though. The easiest way is to just alias them.
@type foo :: Foo.foo
15
Also Liked
RobertDober
You might also group your types into a module like so
defmodule MyApp.Types do
defmacro __using__(_opts) do
quote do
@type greek_t :: :alpha | :beta
@type mystruct_t :: MyApp.MyStruct.t # Beware of circulars here!!
end
end
...
9
Last Post!
RobertDober
You might also group your types into a module like so
defmodule MyApp.Types do
defmacro __using__(_opts) do
quote do
@type greek_t :: :alpha | :beta
@type mystruct_t :: MyApp.MyStruct.t # Beware of circulars here!!
end
end
...
9
Popular in Questions
Hi!
In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir?
Searched the docs for ip address and the web, no good results.
Thanks!
New
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set?
Thanks.
New
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New
In templates/appointment/index.html.eex:
<%= for appointment <- @appointments do %>
<tr>
<td><%= appoi...
New
Hi All,
I set a environment variables in dev.exs , like below code.
when i start server, how can i set the ${enable} value?
thanks.
d...
New
I tried installing
elixir 1.11.2
erlang 23.3.4
via asdf in my zsh shell. Enabled the versions locally and globally.
When I list them ...
New
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
Other popular topics
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
If I have a post route which an argument:
post /my_post_route/:my_param1, MyController.my_post_handler
How would get the post params ...
New
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible.
total = 10
while total != 0
...
New
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
Hi All,
I set a environment variables in dev.exs , like below code.
when i start server, how can i set the ${enable} value?
thanks.
d...
New
I’ve got an issue with an app and I’ve no idea of how to troubleshoot it. I’m hoping someone here might have seen something similar.
I p...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #forms
- #api
- #metaprogramming
- #hex
- #security









