Descubra dinámicamente cuántas entradas tiene una función, RACKET
Pregunta
¿Hay alguna forma de averiguar en tiempo de ejecución, cuántas entradas (argumentos, parámetros) tiene una función?
Di, quiero:
(define (my-function unknown-function)
...
(number-of-necessary-arguments unknown-function)
...)
Solución
Puedes usar procedure-arity
.
(procedure-arity expt) ; => 2
Tenga en cuenta que al usar procedure-arity
con funciones variádicas o case-lambda
o similares, los resultados son más complicados:
(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))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow