/ / ¿Cómo se sabe de dónde viene una función en Elixir? - elixir

¿Cómo se puede saber de dónde viene una función en Elixir? - elixir

Por ejemplo, asignar no está definido en ningún lugar de este módulo. También puede ver que es uses Phoenix.Channel, pero eso no tiene assign definido en cualquier lugar tampoco. Resulta assign se define en Phoenix.Socket, y la única razón por la que sé que es porque hay una macro definida en Phoenix.Socket llamado canal, que es lo que usa Phoenix.LiveReload.Channel. Y al parecer, de alguna manera, eso da Phoenix.LiveReload.Channel el assign función.

¿Cómo se supone que debes rastrear esa lógica distinta de grep. Como si solo estuviera mirando Phoenix.LiveReload.Channelcomo sabría donde assign ¿vino de?

Respuestas

2 para la respuesta № 1

Esta fue la respuesta del creador, José Valim:

Las importaciones y alias de Elixir son léxicos, lo quesignifica que cualquier cosa que aparezca en un módulo que no haya definido debe haberse importado explícitamente en el código. Por lo tanto, buscar el uso de Mod o importar Mod es el camino a seguir para encontrar de dónde proviene una función. La única excepción a esta regla es el módulo de Kernel que se importa de forma predeterminada.