【问题标题】:CoffeeScript: Setting default values for destructured argumentsCoffeeScript:为解构参数设置默认值
【发布时间】:2014-10-23 02:48:41
【问题描述】:

在 CoffeeScript 中,我可以为函数参数设置默认值,如下所示:

func = (one = 'one') ->

但是当像这样传递对象时如何设置默认值:

func = ({ one }) ->

执行以下操作不会起作用,例如:

func = ({ one: 'one' }) ->

我愿意使用像 Lo-Dash 这样的外部库,它提供了_.defaults。所以我可以做到以下几点:

func = (args) ->
  _.defaults args, { one: 'one' }
  { one } = args

但这对我的口味来说有点长。特别是,我想简化它,以便只提到一次 one 键/变量。这在我更改函数的参数时更有用。

例如,我是否可以使用另一种方法,也许在另一个库中(当然,最好是已经存在于 LoDash 中的库),它可以通过使用对象的键作为新变量名来专门解构对象?

【问题讨论】:

    标签: javascript function coffeescript underscore.js lodash


    【解决方案1】:

    不幸的是,您必须在函数内部分配它。

    func =({one})->
      one ?= 1
      one
    
    func(one: 2) #=> 2
    func()  #=> 1
    

    使用lowdash,你当然也可以在函数调用中做到这一点

    func _.defaults(ags, {one: 1})
    

    根据用例,这是可以接受的。

    然后你也可以使用部分应用程序

    func = ({one})-> one
    
    func1 = (fn, supplied)->
      (args)-> fn(_.defaults(args, supplied))
    
    myFun = func1(func, one: 1)
    myFun(foo: 'foo') #=> 1
    myFun(one: 2) #=> 2
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 2010-10-28
    • 2021-12-24
    相关资源
    最近更新 更多