2014-09-30 54 views
4

在Lisp中(任何lisp方言都會這樣做)用調用函數的方式是多少 args?用很多參數調用函數的習慣用法是什麼?

很多我的意思是超過80個字符的限制。

假設我們有一個名爲foo-func一個例子函數採用可變數量的參數

(foo-func 'foo 'bar 'baz 'qux 'foo-bar 'foo-baz 'foo-qux 'bar-foo 'bar-baz 'you-get-the-idea) 

一個怎樣通常會安排ARGS如果不是長難以理解線?

注意這不是一個關於個人偏好的問題,這是關於它是如何推薦它做

回答

7

通常情況下,它會被排列如下:

(foo-func 'foo 
      'bar 
      'baz 
      'qux 
      'foo-bar 
      'foo-baz 
      'foo-qux 
      'bar-foo 
      'bar-baz 
      'you-get-the-idea) 

在某些情況下,你可能把在一條線上的幾個參數:

(foo-func 'foo 
      'bar 
      'baz 
      'qux 
      'foo-bar 'foo-baz 'foo-qux 
      'bar-foo 'bar-baz 
      'you-get-the-idea) 

但是,任何具有超過一些爭論往往會大量使用的關鍵字參數:

(foo-func 'foo 
      'bar 
      'baz 
      'qux 
      :barista 'foo-bar 
      :bazaar 'foo-baz 
      :quxfrog 'foo-qux 
      :baroofa 'bar-foo 
      :barazza 'bar-baz 
      :say-what 'you-get-the-idea) 

在這裏,你也許可以把需要的參數上一行:

(foo-func 'foo 'bar 'baz 'qux 
      :barista 'foo-bar 
      :bazaar 'foo-baz 
      :quxfrog 'foo-qux 
      :baroofa 'bar-foo 
      :barazza 'bar-baz 
      :say-what 'you-get-the-idea) 
+6

另外,如果你有一個函數有11個參數,你'可能做錯了。 – Xach 2014-09-30 11:24:49

+0

@Xach一個必需的參數和5個關鍵字參數很容易導致傳遞給函數的11個「參數」,這對於某些類型的構造函數來說並不是不合理的。但是,是的,如果這些都是必需的參數,那麼應該重構一些東西。 – 2014-09-30 11:44:46

+0

我知道OP已經接受了答案。但他說這個函數需要可變數量的參數。所以也許他需要一個清單。或者'(define(foo.args)args)' – Rptx 2014-09-30 16:18:16

相關問題