Clause
← Gesamte Dokumentation

Das englische Original wurde seit dieser Übersetzung geändert, daher können Teile davon veraltet sein. Auf Englisch lesen

Übersetzt aus dem englischen Original · 1e3a39c8-dirty · 2026-10-26

Funktionswerte

fun F/A, fun M:F/A, anonyme Funs mit erfassten Variablen (Closures), benannte Funs (fun Name(...) -> ... end), Aufrufe von Funktionswerten (F(Args)) und dynamische Aufrufe (M:F(Args), apply/2,3). Die Fakten stammen aus den festgelegten maint-29-Quellen (erts/emulator/beam/utils.c erts_cmp, erl_printf_term.c, erl_lint) und aus Proben mit OTP 29.1.1.

Werte

QuelleWertAufrufe betreten
fun f/1Lokale Fun dieses Moduls; jedes fun f/1 eines Moduls ist derselbe Wertf/1 dieses Moduls, exportiert oder nicht
fun m:f/1Externe Fun, die m:f/1 benennt, auch für das aktuelle Modulm:f/1, wenn ein Modul des Programms es exportiert
fun(X) -> ... endLokale Fun, die die Variablen erfasst, die sie von ihrem Erzeuger liest; jede Auswertung baut einen neuen WertDie eigene erzeugte Funktion der Fun
fun Name(X) -> ... endDasselbe, wobei Name innerhalb ihrer Klauseln an die Fun gebunden istDie eigene erzeugte Funktion der Fun
fun M:F/A mit VariablenExterne Fun, gebaut bei der Auswertung; gleich dem literalen fun m:f/1, das sie benenntm:f/1, wenn ein Modul des Programms es exportiert

Dynamische Aufrufe

Closures

Inline eingebettete funs

Bei -O2 (codegen/lowering_fun_inlining.cpp, lowering_list_loops.cpp, lowering_map_loops.cpp) werden bei einem Aufruf eines an der Aufrufstelle bekannten anonymen fun dessen Klauseln anstelle des Aufrufs abgesenkt, ähnlich wie mit OTPs Option inline_list_funcs:

Darstellung

Vergleich und Ausgabe

Unterschiede

Nummerierung, Ausgabe und Ordnung von Funs, die Erfassungsreihenfolge in Comprehensions, undef-Stacktraces und Aufrufe von Modulen außerhalb des Programms weichen von OTP ab, wie in Unterschiede festgehalten.

Informationen über Funs

runtime/src/builtins/erlang/fun_info.cpp. erlang:fun_info/1 listet die Einträge von OTP in der Reihenfolge von OTP auf: für eine lokale Fun pid, module, new_index, new_uniq, index, uniq, name (-F/A-fun-N- für eine anonyme Fun), arity, env (die erfassten Werte) und type; für fun M:F/A module, name, arity, env ([]) und type. fun_info/2 gibt ein {Item, Value} zurück; ein unbekannter Eintrag ist badarg. pid ist undefined, new_uniq der MD5 des Modulnamens und uniq dessen erste 24 Bit, daher weichen sie von OTP ab. fun_to_list/1 ist der Text von ~w. is_builtin/3 ist wahr für die Builtins der Runtime und erlang:apply/2,3.