如何使用coffeescript从对象返回n值

如何使用coffeescript从对象返回n值,coffeescript,Coffeescript,昨天@SuperSkunk为我解决了一个小问题: 我使用此设置从存储的设置中检索值: myProject = settings: value1: one value2: two value3: three getSetting: (key) -> @settings[key] 因此,当我调用getSetting('value1')时,我得到one 如何更改代码以传递n个参数以获取n个值?提前谢谢你 要使用以下内容,请包括下划线.js(http://undersco

昨天@SuperSkunk为我解决了一个小问题:

我使用此设置从存储的设置中检索值:

myProject =

 settings:
  value1: one
  value2: two
  value3: three

 getSetting: (key) ->
  @settings[key]
因此,当我调用
getSetting('value1')
时,我得到
one


如何更改代码以传递n个参数以获取n个值?提前谢谢你

要使用以下内容,请包括下划线.js(http://underscorejs.org)还是咖啡脚本的变体(http://coffeescript.org/documentation/docs/underscore.html)


getSettings:(键)->
_.map(u.flant([key]),(key)->@settings(key))


上述内容应与传入的数组或上述单个值一起使用

您可以使用splat并列出理解:

getSetting: (keys...) ->
   (@settings[key] for key in keys)
现在,如果调用
getSettings'value1'、'value2'
,结果就是数组
['one','two']

“按原样返回”的意思可能只是在接收到值时进行分解

因此,以上面的例子为例,您可以

[value1, value2] = getSettings "value1", "value2"

非常感谢。我正在试验splats,但无法使其工作。我很好奇-是否有机会返回“原样”而不是数组中的值?你说的“原样”到底是什么意思?如果您只想返回设置了这些键的新哈希,您可以使用诸如getSetting:(keys…->result={};结果[键]=@键入键设置[键];结果当我使用“单参数调用”(就像在我的问题中)时,我得到字符串和数字,就像它们被存储一样。当我得到一个数组或哈希表时,我的后续函数将无法工作,因为它们需要字符串或数字。您的代码运行良好-我想没有简单的方法从数组或哈希表中选择每个元素并返回它们。。。例如,结果将是
left,250,red
,而不是
[left,250,red]
——但也许这是一个新问题,我在你建议的代码之后玩了一点,想出了这句话:
console.log“#{value}”代表键,结果值
->向前迈进了一大步!因此,我的最后一个问题是:如何在一行中返回值,用逗号分隔?感谢您的回答-但我希望保持项目的原样-因为这已经足够困难了:)
[value1, value2] = getSettings "value1", "value2"