动态找出一个函数有多少个输入,Racket

发布于 2024-12-03 11:50:16 字数 178 浏览 0 评论 0原文

有没有办法在运行时找出函数有多少个输入(参数、形参)?

说吧,我想:

(define (my-function unknown-function)
  ...
  (number-of-necessary-arguments unknown-function)
  ...)

Is there a way to find out at runtime, how many inputs (arguments, parameters) a function has?

Say, I want to:

(define (my-function unknown-function)
  ...
  (number-of-necessary-arguments unknown-function)
  ...)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小耗子 2024-12-10 11:50:16

您可以使用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))

You can use procedure-arity.

(procedure-arity expt)                     ; => 2

Note that when using procedure-arity with variadic functions or case-lambda or the like, the results are more complicated:

(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))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文