Wann anonyme Funktionen in Elixir anstelle von benannten Funktionen zu verwenden?Wann sollen anonyme Funktionen in Elixir verwendet werden?
Zum Beispiel habe ich diese Schnipsel:
handle_open = fn
{:ok, :done} -> "OK"
{:error, _} -> "Error:"
end
handle_open.(ExAws.S3.download_file("#{Application.get_env(:ex_aws, :s3)[:bucket_s3]}", "foo.jpg", "../../public") |> ExAws.request);
In diesem Fall habe ich eine anonyme Funktion verwenden. Wie kann ich mit einer benannten Funktion das gleiche Ergebnis (mit Mehrkörper) erhalten?
In diesem Fall ist es richtiger, eine anonyme oder benannte Funktion zu verwenden?
Die Antwort auf die Verwendung von anonymen oder benannten Funktionen ist dieselbe, wenn Sie ein wenig Code in eine neue Funktion extrahieren. Warum extrahierst du? Weil Sie es wiederverwenden wollen. Wenn Ihr Code eher klein ist, definieren Sie einfach eine anonyme Funktion und verwenden Sie sie (meistens bei Funktionen, die einen Callback erhalten, z. B. "Enum.map"). Wenn Sie Ihre Funktion woanders brauchen, ist es besser, sie in eine benannte Funktion zu extrahieren. Als Randnotiz haben Sie Ihre anonyme Funktion einer Variablen zugewiesen. Das sehe ich selten. Verwenden Sie anonyme Inline-Funktionen für Einmalcodes und benannte für wiederverwendbare Codes. – vfsoraki