【问题标题】:Dynamically find out how many inputs a function has, Racket动态找出一个函数有多少输入,Racket
【发布时间】:2011-09-08 01:12:42
【问题描述】:

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

说,我想:

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

【问题讨论】:

  • 你真的不需要“申请”吗?

标签: scheme racket arity


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 2022-08-12
    • 1970-01-01
    • 2014-08-30
    • 2020-03-31
    • 1970-01-01
    相关资源
    最近更新 更多