繁体   English   中英

在CoffeeScript中为可选参数的字段设置默认值的简洁方法是什么?

[英]What's a concise way to have defaults for the fields of an optional parameter in CoffeeScript?

我有一个带有此签名的函数:

createUiLabel = (text, fontProperties) ->

我希望fontProperties是可选的,如果未定义,则默认为如下所示:

{
  size: defaultSize
  family: defaultFamily
  color: defaultColor
}

我知道我可以通过这样的破坏来实现:

createUiLabel = (text, fontProperties = {
  size: defaultSize
  family: defaultFamily
  color: defaultColor
}) ->

但是能够这样调用该函数确实很方便:

createUiLabel("foo", {size: 14})

并且让colorfamily仍然使用默认值。 但是似乎传入该对象将覆盖其他属性,因此colorfamily变得不确定。 当您只想更改一个属性时,从外部定义这些其他属性很烦人。 如何轻松实现该函数,以便前面的调用将为我提供colorfamily的默认值?

这似乎与最简洁的方法类似,即仅当CoffeeScript中存在变量时才从变量分配值? 区别在于,我尝试从中提取可选字段,这之间存在一个可选对象。

我将使用在空默认值上的存在运算符进行显式复合分配:

createUiLabel = (text, fontProperties = {}) ->
    fontProperties.size ?= defaultSize
    fontProperties.color ?= defaultColor
    fontProperties.family ?= defaultFamily
    …

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM