Finden Sie dynamisch heraus, wie viele Eingänge eine Funktion hat, Schläger
Frage
Gibt es eine Möglichkeit, zur Laufzeit herauszufinden, wie viele Eingaben (Argumente, Parameter) eine Funktion hat?
Sagen Sie, ich möchte:
(define (my-function unknown-function)
...
(number-of-necessary-arguments unknown-function)
...)
Lösung
Sie können verwenden procedure-arity
.
(procedure-arity expt) ; => 2
Beachten Sie das, wenn Sie verwendet werden procedure-arity
mit variadischen Funktionen oder case-lambda
oder dergleichen, die Ergebnisse sind komplizierter:
(procedure-arity apply) ; => (arity-at-least 2)
(procedure-arity (case-lambda
((x) x)
((x y z) z)
((a b c d e f . g) g))) ; => `(1 3 ,(arity-at-least 6))
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow