2

可変長の引数のリストを取る関数があります。その長さに応じて、別の関数を呼び出す必要がありますが、引数の長さが異なります。以下の関数が表示されます。

  (define (set-contents . args)
   (define columns-length (length args))
        (cond
          ((= columns-length 1) 
           (send output-list set (empty-list rows-length) (get-nth-item columns-as-list 0)))
          ((= columns-length 2) 
           (send output-list set (empty-list rows-length) (get-nth-item columns-as-list 0) (get-nth-item columns-as-list 1)))
          ((= columns-length 3) 
           (send output-list set (empty-list rows-length) (get-nth-item columns-as-list 0) (get-nth-item columns-as-list 1) (get-nth-item columns-as-list 2)))
          ((= columns-length 4) 
           (send output-list set (empty-list rows-length) (get-nth-item columns-as-list 0) (get-nth-item columns-as-list 1) (get-nth-item columns-as-list 2) (get-nth-item columns-as-list 3)))

この条件句はさらに長くなる可能性があります。それは機能していますが、まったく適切ではありません。

この関数を埋めるためのより良い方法はありますか?

4

2 に答える 2