joshua.aug
Return type of map
I’m looking at an existing project with code like this:
@spec default_rating :: List.t()
@spec default_rating(non_neg_integer()) :: List.t()
def default_rating(rating_type_id \\ nil) do
{skill, uncertainty} = Openskill.rating()
rating_value = calculate_rating_value(skill, uncertainty)
leaderboard_rating = calculate_leaderboard_rating(skill, uncertainty)
%{
rating_type_id: rating_type_id,
skill: skill,
uncertainty: uncertainty,
rating_value: rating_value,
leaderboard_rating: leaderboard_rating
}
end
I don’t understand why the return type is List.t().
Can I use :: map as the return type? What’s the difference?
Marked As Solved
LostKobrakai
Typespecs are not checked by compiling the code, but only by external type checkers like dialyzer and others. Therefore in a context where such checkers are not (regularly) used it‘s easy for mistakes in typespecs not to be caught.
Also Liked
Teifion
I’m the person that wrote this. As per the other comments yes this is 100% a mistake (mine) and probably because I copied and pasted something wrong or completely misunderstood something at the time. As you can see I then changed the function and never updated the type spec which isn’t great of me.
dimitarvp
I don’t see a declaration of the sort @type List ... in the project so this is definitely a mistake on the authors’ part.
rvirding
Popular in Questions
Other popular topics
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
- #api
- #forms
- #metaprogramming
- #security
- #hex









