Ho un modulo che viene utilizzato principalmente come spazio dei nomi. Chiamiamolo allo Bla
. Ci sono altri sottomoduli che hanno metodi con funzioni specifiche per quel sottomodulo.Qual è la differenza tra defdelegate e def con funzione modulo di chiamata direttamente in Elixir
Tuttavia, voglio avere due opzioni:
1) importare modulo principale Bla
e utilizzare tutte le funzioni da moduli direttamente (per non scrivere più importazioni separatamente)
2) solo importazione modulo specifico come Bla.Subbla
utilizzare le funzioni solo da questo modulo senza funzioni di importazione da altri sottomoduli
questo è quello che ho:
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
Qual è il modo giusto per farlo? Ho due opzioni, ma non ne ho idea, forse, ce n'è una molto più bella. Queste due opzioni sono equivalenti? E quale è preferibile? C'è qualche differenza nelle prestazioni?
Penso che dovresti prendere in considerazione l'uso di 'use' e passare ad esso le opzioni relative a ciò che desideri importare. – JustMichael
suona bene, leggerà di questa opzione (sto solo imparando - non so molto al momento) – kovpack