Mam moduł, który jest najczęściej używany jako przestrzeń nazw. Nazwijmy to Bla
. Istnieją inne submoduły, które mają metody z określonymi funkcjami tego modułu.Jaka jest różnica między defdelegate i def z funkcją modułu połączeń bezpośrednio w Elixir
Jednakże chcę mieć dwie opcje:
1) importować moduł główny Bla
i korzystać ze wszystkich funkcji z submodules bezpośrednio (nie pisać wiele importu osobno)
2) import tylko specyficzny modułem jak Bla.Subbla
korzystania z funkcji tylko z tego modułu bez importowania funkcji z innych submodules
to jest to, co mam:
defmodule Bla do
defdelegate bla_func(text), to: Bla.Subbla
defdelegate bla_func(text, opts), to: Bla.Subbla
end
defmodule Bla do
def bla_func(text), do: Bla.Subbla.bla_func(text)
def bla_func(text, opts), do: Bla.Subbla.bla_func(text, opts)
end
Co to jest właściwy sposób? Mam dwie opcje, ale nie mam pojęcia, być może jest o wiele lepsza. Czy te dwie opcje są równoważne? A który z nich jest lepszy? Czy jest jakaś różnica w wydajności?
Myślę, że powinieneś rozważyć użycie 'use' i przekazanie mu opcji dotyczących tego, co chcesz zaimportować. – JustMichael
brzmi nieźle, przeczyta o tej opcji (po prostu się uczę - obecnie nie wiem za bardzo) – kovpack