调用具有多个参数的函数的惯用方法是什么?

Ele*_*fee 4 lisp coding-style

在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)
Run Code Online (Sandbox Code Playgroud)

如果不是在一条长不可理解的线路上,人们通常如何安排args?

注意这不是关于个人偏好的问题,而是关于如何推荐它的完成

Sva*_*nte 7

通常,它会像这样对齐:

(foo-func 'foo
          'bar
          'baz
          'qux
          'foo-bar
          'foo-baz
          'foo-qux
          'bar-foo
          'bar-baz
          'you-get-the-idea)
Run Code Online (Sandbox Code Playgroud)

在某些情况下,您可以将多个参数放在一行中:

(foo-func 'foo
          'bar
          'baz
          'qux
          'foo-bar 'foo-baz 'foo-qux
          'bar-foo 'bar-baz
          'you-get-the-idea)
Run Code Online (Sandbox Code Playgroud)

但是,任何具有多个参数的函数通常都会大量使用关键字参数:

(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)
Run Code Online (Sandbox Code Playgroud)

在这里,您可以将所需参数放在一行:

(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)
Run Code Online (Sandbox Code Playgroud)

  • 另外,如果你有一个带有11个参数的函数,你可能正在做错了. (6认同)