CoffeeScript多值切换语句?

时间:2011-09-12 22:49:58

标签: coffeescript

switch @user && @other
    when 'user' && true
        ...
    when 'user2' && false
       ...

这样的事情可能吗?由于某种原因它不起作用。谢谢!

1 个答案:

答案 0 :(得分:1)

遗憾的是JS不认为[1, 2] === [1, 2](因为它们是不同的引用);否则你可以使用数组来做你想做的事。

相反,这是一个函数:

multiSwitch = (values, cases...) ->
  for c in cases
    match = true
    for i in [0...values.length]
      unless c[i] is values[i]
        match = false
        break
    return c[values.length]() if match
  return

像这样使用:

multiSwitch [@user, @other],
  ['user', true, ->
    console.log 'case 1'
  ]
  ['user2', false, ->
    console.log 'case 2'
  ]

根据您正在做的事情,可能更容易,例如,将多个值连接成一个字符串,并对其执行switch