Ich habe ein einfaches Makro, das eine Funktion in das aufrufende Modul einfügt.Funktion außerhalb des Angebotsblocks in Elixir definieren
defmodule MyModule do
defmacro __using__(_opts) do
quote do
def run do
IO.puts "Hello world"
end
end
end
end
Dies funktioniert soll als aber aufgrund der Tatsache, dass die Lauffunktion innerhalb des Kursblock verschachtelt ist, ich bin nicht in der Lage Dokumentation hinzufügen ExDoc verwenden. Ich möchte auch die Run-Funktion außerhalb definieren, da ich fühle, dass der Code besser aussieht. So etwas wie dieses:
defmodule MyModule do
def run do
IO.puts "Hello world"
end
defmacro __using__(_opts) do
quote do
# Some code to inject the run function
end
end
end
Wie gehe ich dabei vor? Wie füge ich außerdem Dokumentation hinzu, die ExDoc für eine geschachtelte Funktion verwendet?
Haben Sie in der Dokumentation zu 'MyModule.run' hinzufügen möchten oder haben Sie es in der' run' Funktion, die Sie in das Modul injizieren angezeigt werden soll, die 'MyModule' nicht verwendet? – Dogbert
@Dogbert Ich möchte die Dokumentation zu MyModule.run hinzufügen und in dem Modul, das MyModule verwendet –
@Dogbert Wenn ich die Dokumente für die geschachtelte Ausführung definieren, bekomme ich die Dokumentation im Zielmodul, aber nicht das ursprüngliche Modul. –