Formatting 在CoffeeScript中,我应该如何格式化接受匿名函数和其他参数的函数调用?
下面是我想出的一个人为的例子:Formatting 在CoffeeScript中,我应该如何格式化接受匿名函数和其他参数的函数调用?,formatting,coffeescript,code-formatting,Formatting,Coffeescript,Code Formatting,下面是我想出的一个人为的例子: fn = (f, a, b, c)-> alert("#{f() + a + b + c}") fn((-> "hi"), 1, 2, 3) 我想知道最后一行的格式建议是什么?这个例子很容易理解,但是想象一下,如果匿名函数((>“hi”))是多行的,并且具有多个参数。这段代码将变得非常难看,并开始看起来像lisp fn2 = (f, a, b, c)-> alert("#{f(1, 2) + a + b + c}") fn2(((a, b)
fn = (f, a, b, c)-> alert("#{f() + a + b + c}")
fn((-> "hi"), 1, 2, 3)
我想知道最后一行的格式建议是什么?这个例子很容易理解,但是想象一下,如果匿名函数((>“hi”)
)是多行的,并且具有多个参数。这段代码将变得非常难看,并开始看起来像lisp
fn2 = (f, a, b, c)-> alert("#{f(1, 2) + a + b + c}")
fn2(((a, b) ->
c = a + b
c), 1, 2, 3)
这会变得很糟糕。是否有某种方式可以格式化此代码以使其更具可读性,或者是命名匿名函数的最佳建议
我注意到一些类似的问题,询问如何做到这一点。这里的区别是我在问如何格式化它 这种风格我见过好几次了:
fn2 (a, b) ->
a + b
, 1, 2, 3
例如,在setTimeout
调用中:
setTimeout ->
alert '1 second has passed'
, 1000
但我认为,一般来说,最好在变量中分离参数函数:
add = (a, b) ->
a + b
fn2 add, 1, 2, 3
或者,如果可以更改函数定义,则将函数参数设置为最后一个:
fn2 1, 2, 3, (a, b) ->
a + b
在Coffeescript文档中有一个函数参数last的示例
task 'build:parser', 'rebuild the Jison parser', (options) ->
require 'jison'
code = require('./lib/grammar').parser.generate()
dir = options.output or 'lib'
fs.writeFile "#{dir}/parser.js", code
Coffeescript测试文件中有很多函数last的示例
test "multiple semicolon-separated statements in parentheticals", ->
nonce = {}
eq nonce, (1; 2; nonce)
eq nonce, (-> return (1; 2; nonce))()
当函数不是最后一个时,您需要梅西耶缩进和逗号,或额外的括号来定义函数的边界。同意,通常在node.js中,您会看到回调函数尾随,因此习惯于这样做是一种很好的做法。