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