Switch case statement in coffee script

前端 未结 2 1781
春和景丽
春和景丽 2021-02-06 20:34

I have a few different buttons that are calling the same function and I would like to have them wrapped in a switch statement instead of using a bunch of else if conditions. Any

相关标签:
2条回答
  • 2021-02-06 20:50

    There are two forms of switch in CoffeeScript:

    switch expr
        when expr1 then ...
        when expr2 then ...
        ...
        else ...
    

    and:

    switch
        when expr1 then ...
        when expr2 then ...
        ...
        else ...
    

    The second form might help you:

    view = switch
      when target.hasClass 'red' then new App.RedView
      when target.hasClass 'blue' then new App.BlueView
      when target.is '#black' then new App.BlackView
      else null
    

    You could leave out the else null if undefined is an acceptable value for view. You could also wrap the logic in an (explicit) function:

    viewFor = (target) ->
        # There are lots of ways to do this...
        return new App.RedView   if(target.hasClass 'red')
        return new App.BlueView  if(target.hasClass 'blue')
        return new App.BlackView if(target.is '#black')
        null
    
    view = viewFor target
    

    Giving your logic a name (i.e. wrapping it in a function) is often useful for clarifying your code.

    0 讨论(0)
  • 2021-02-06 20:53

    In addition to the details in the accepted answer, switch statements in CoffeeScript also supports , to provide multiple match results:

    switch someVar
        when val3, val4 then ...
        else ...
    

    or (if your statements has multiple lines):

    switch someVar
        when val3, val4
            ...
        else
            ...
    
    0 讨论(0)
提交回复
热议问题