1

次の行に沿って一般的な関数を定義したいと思います。

(define (gen-func other-func)
   (other-func))

渡された関数を実行します。しかし、私はパラメータを渡すことができるようにしたいother-func. だから私が持っていたとしたら:

(define (add-test a b c d)
    (+ a b c d))

(define (divide-test a b)
    (/ a b))

それから私はできる

(gen-func divide-test 3 4)

(gen-func add-test 1 2 3 4)

しかし、それは実際に私が望むことを行います(つまり、任意の数の引数を渡して関数を実行します)。これはラケットを学ぶ私のプロセスの一部です。

4

1 に答える 1

5

あなたが探しているのはapply、残りの引数です:

(define (gen-func func . args)
   (apply func args))

ドット付きパラメーター リストfunc . argsは、最初の引数がリストに収集された後のすべての引数になりますargs。これが機能する理由(func . args)は と同じ(cons func args)であるため、関数が呼び出されると、funcが に設定され(car arglist)、最初の引数の後の引数のリストが にargs設定されます。(cdr arglist)

于 2013-04-04T07:25:15.683 に答える