Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果我的任何开关盒匹配,如何运行附加功能?_Javascript_Coffeescript_Switch Statement - Fatal编程技术网

Javascript 如果我的任何开关盒匹配,如何运行附加功能?

Javascript 如果我的任何开关盒匹配,如何运行附加功能?,javascript,coffeescript,switch-statement,Javascript,Coffeescript,Switch Statement,如果switch语句中的任何情况匹配,我想运行一个辅助函数 目前,我有: flag = false switch day when "Mon" something1() flag = true when "Tue" something2() flag = true if flag hi() 有没有一种方法可以清理这个问题,这样我就不必使用标志了?您不必在所有情况下都使用标志=true:仅在默认子句(其他)中设置它 尽管我建议使用ni

如果switch语句中的任何情况匹配,我想运行一个辅助函数

目前,我有:

flag = false
switch day
  when "Mon"
     something1()
     flag = true
  when "Tue"
     something2()
     flag = true

  if flag
    hi()

有没有一种方法可以清理这个问题,这样我就不必使用
标志了?

您不必在所有情况下都使用
标志=true
:仅在
默认
子句(
其他
)中设置它


尽管我建议使用nice建议将标志分配移出开关,但如果您的目标是消除标志变量的使用,则可以在设置标志的每种情况下调用函数hi(),如下所示:

switch day
  when "Mon" 
     something1()
     hi()
  when "Tue" 
     something2()
     hi()
  else 
     notHi()

添加了else case,因为当您的标志设置为false时,如果您需要执行某些操作,它可能会很有用。

很难从这样一个简单的示例中分辨出来,但是重新构建东西以避免
开关
并简单地维护一个键/值对列表,其中键是“Mon”/“Tue”/etc和值是要执行的函数:

funcs =
  Mon: something1
  Tue: something2
  Wed: something3
  # etc ...

funcs[day]?() # invoke the matching function, if any

hi() if funcs[day] # invoke "hi" if there was a matching function

调用该函数只需索引数组并使用
操作符,您只需测试数组中是否存在键,就可以知道是否要运行
hi

,这不是默认情况的目的吗?@Zenith default我认为如果它与任何开关都不匹配,就会运行。它就像一个通球。我想我是在寻找与默认相反的方法。这是一个很好的建议,但它会重命名标志,而不是取消其用法……虽然您可以在
s时将
hi
调用放入所有
中,但我认为这种方法更干净。关键不在于去掉某些标志,而是要防止代码重复。我同意这是一种比重复调用hi()函数更好的方法。要么
然后
或者应该删除下一个换行符。您当前的代码是无效的CoffeeScript。这是个好主意。switch语句非常适合当前的结构,但这是一个好主意。
funcs =
  Mon: something1
  Tue: something2
  Wed: something3
  # etc ...

funcs[day]?() # invoke the matching function, if any

hi() if funcs[day] # invoke "hi" if there was a matching function