1
如何獲取提供給Lisp函數的參數數目,如bash中變量$ 0所示? (我看到一個類似的問題,但它沒有給出答案。)如何獲取提供給lisp函數的參數個數
如何獲取提供給Lisp函數的參數數目,如bash中變量$ 0所示? (我看到一個類似的問題,但它沒有給出答案。)如何獲取提供給lisp函數的參數個數
這並不清楚你在問什麼,但在Common Lisp中,你可以使用&rest
參數來收集一個不確定數量的參數到列表中。使用length
你可以看到提供了多少個。例如:
CL-USER> (defun numargs (&rest arguments)
(length arguments))
NUMARGS
CL-USER> (numargs 1 2 3)
3
CL-USER> (numargs 1 2 3 4 5)
5
CL-USER> (numargs)
0
因爲這個問題有sbcl標籤,你可能會感興趣的特定SBCL的解決方案。 sb-introspect:function-lambda-list
看上去相關:
CL-USER> (sb-introspect:function-lambda-list 'cons)
(SB-IMPL::SE1 SB-IMPL::SE2)
CL-USER> (sb-introspect:function-lambda-list 'numargs)
(&REST ARGUMENTS)
如果檢查拉姆達列表,你可以決定一個函數可以有多少論據走。
你知道如何定義一個可變參數的函數嗎?最簡單的函數定義不會,所以毫無疑問傳遞了多少個參數。如果您學習如何定義可變參數函數,將很容易找出如何確定傳遞了多少個參數。 – Mars 2013-04-05 05:17:04