如果我的switch语句中的任何一个案例都匹配,我想运行一个辅助函数。
目前,我有这个:
flag = false
switch day
when "Mon"
something1()
flag = true
when "Tue"
something2()
flag = true
if flag
hi()
有没有办法清理它,以便我不必使用flag
?
答案 0 :(得分:2)
在所有情况下,您不必使用flag = true
:仅在default
子句(else
)中设置它。
shouldRun = true
switch day
when "Mon"
something1()
when "Tue"
something2()
else
shouldRun = false
if shouldRun
hi()
答案 1 :(得分:1)
很难从这样一个简单的例子中说出来,但重新设计事物以避免switch
并简单地维护键/值对的列表可能更有意义,其中键是" 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
。 / p>
答案 2 :(得分:0)
虽然我建议使用关于将标志分配移出开关的好建议,如果你的目标是消除标志变量的使用,可以通过在每种情况下调用函数hi()来完成你在哪里设置标志如下所示:
switch day
when "Mon"
something1()
hi()
when "Tue"
something2()
hi()
else
notHi()
添加了else案例,因为如果您在标志设置为false时需要执行某些操作可能会有用。