【发布时间】:2011-09-08 01:12:42
【问题描述】:
有没有办法在运行时找出一个函数有多少输入(参数、参数)?
说,我想:
(define (my-function unknown-function)
...
(number-of-necessary-arguments unknown-function)
...)
【问题讨论】:
-
你真的不需要“申请”吗?
有没有办法在运行时找出一个函数有多少输入(参数、参数)?
说,我想:
(define (my-function unknown-function)
...
(number-of-necessary-arguments unknown-function)
...)
【问题讨论】:
您可以使用procedure-arity。
(procedure-arity expt) ; => 2
注意,当procedure-arity与可变参数函数或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))
【讨论】: