V
Например я делаю:
defmodule Z do
defstruct name: nil
@enforce_keys [:name]
@opaque t() :: %__MODULE__{ name: String.t() }
end
%Z{name: "Vasya"} # создаётся
ЧЯДНТ?
Size: a a a
V
defmodule Z do
defstruct name: nil
@enforce_keys [:name]
@opaque t() :: %__MODULE__{ name: String.t() }
end
%Z{name: "Vasya"} # создаётся
RP
SM
defmodule Z do
defstruct name: nil
@enforce_keys [:name]
@opaque t() :: %__MODULE__{ name: String.t() }
end
%Z{name: "Vasya"} # создаётся
@opaque
действует на уровне typespec-ов и документации. В коде тебе запретить создавать эту структуру никто не может помешать, к сожалению.LL
defmodule Z do
defstruct name: nil
@enforce_keys [:name]
@opaque t() :: %__MODULE__{ name: String.t() }
end
%Z{name: "Vasya"} # создаётся
a
defmodule Z do
defstruct name: nil
@enforce_keys [:name]
@opaque t() :: %__MODULE__{ name: String.t() }
end
%Z{name: "Vasya"} # создаётся
@type, @spec
и друзья существуют, по сути, только для документации и проверки диалайзером. A
a
A
a
a
A
A
ВК
ВК
A
A
LL
elixir
знать не обязательноLL
A
elixir
знать не обязательноLL