簡體   English   中英

如何在方案中定義一個需要任意數量參數的函數?

[英]How to define a function which takes any number of parameters in scheme?

我想定義一個函數,該函數帶有許多可以更改的參數。

我以為我的函數應該將一個參數作為列表,然后解析它,但是它不起作用或者我寫錯了。

該函數的調用會因belov而異。我認為將函數定義為

(define function (lambda(list)(... 

然后在列表上工作,但沒有成功。

(function param1 '(2 3) '(3 1))

(function param1 '(2 3) '(3 2) '(1 5))

有一種語法,其中所有參數將自動放入列表中:

(define function
  (lambda lst ; no parentheses!
    lst))

或同等學歷

define (function . lst) ; mind the dot!
    lst)

然后

(function '(2 3) '(3 1))
=> '((2 3) (3 1))
(function '(2 3) '(3 2) '(1 5))
=> '((2 3) (3 2) (1 5))

在您的函數內部(在我的示例中,我僅返回列表),然后可以使用高階函數( mapfilter ,...)處理該列表,或使用firstsecond或類似函數對其進行剖析。

您還可以先具有多個固定參數,然后具有可變部分,例如:

(define (function p1 p2 p3 . lst) ; p1-3 are fixed
    (values p1 p2 p3 lst))

(function 'this 'is 'fixed '(2 3) '(3 1))
=> 
'this
'is
'fixed
'((2 3) (3 1))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM