関数がある入力の数、ラケットを動的に見つけます
質問
実行時に、関数がある入力(引数、パラメーター)の数を知る方法はありますか?
言いたい:
(define (my-function unknown-function)
...
(number-of-necessary-arguments unknown-function)
...)
解決
使用できます procedure-arity
.
(procedure-arity expt) ; => 2
使用するときに注意してください procedure-arity
Variadic関数を備えています case-lambda
または、結果はより複雑です:
(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))
所属していません StackOverflow