Switch case statement in coffee script

前端 未结 2 1782
春和景丽
春和景丽 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.

提交回复
热议问题