在CoffeeScript中,有时我需要调用 with a default value;然而,参数的不幸排序意味着初始/缺省值是在减函数本身之后,这意味着我必须使用许多父函数,这似乎比CoffeeScript想要的要丑得多。
例如:
items = [ (id:'id1', name:'Foo'), (id:'id2', name:'Bar') ] # ...
itemsById = items.reduce(((memo, item) -> # <-- Too many parens!
memo[item.id] = item
memo), {}) # Ugly!在CS中有更多的惯用的方法来做到这一点吗?
发布于 2014-02-26 00:11:01
我自己也有其他功能。如果它真的把事情弄得一团糟(或者它真的让我烦心),我可能会在其他地方声明函数(可能在该行的上方),然后将函数作为参数传递,如下所示:
reduce_callback = (memo, item) ->
memo[item.id] = item
memo
itemsById = items.reduce reduce_callback, {}不幸的是,您垂直扩展了一整批,这可能是可取的,也可能是不可取的。这只是一个一般性的建议。
发布于 2014-02-26 00:04:02
这样做是可行的:
itemsById = items.reduce (memo, item) ->
memo[item.id] = item
memo
, {}发布于 2018-06-06 19:43:37
items = [ {id:'id1', name:'Foo'}, {id:'id2', name:'Bar'} ]
itemsById = {}
itemsById[item.id] = item for item in items干净可读的。
https://stackoverflow.com/questions/22028924
复制相似问题