switch 函数类似 select case 语句,可以在一组数据中查找指定的值并执行对应的代码。
switch 利用查表法在指定表中检索值,并通过表的键值对映射获取并执行对应的函数。这种方法也被称为表驱动法( Table-Driven Methods )。当待检索的数据较多时,相比使用 select 或 if 语句,表驱动法精简了判断流程,速度也会快很多很多。
但是 switch 仅支持直接检索表中存储的值,如果需要进行更复杂的条件匹配,请参考 select case 语句 或者 if 语句 。
switch 是内置的保留函数,全局可用。
switch( switchValue,caseTable,default,...)
switch("caseValue1",{
caseValue1: function(){
print("参数值是 caseValue1")
};
caseValue2: function(){
print("参数值是 caseValue2")
};
caseValue3: function(){
print("参数值是 caseValue3")
};
default: function(){
print("没有找到匹配的值")
};
})
这个函数做的事非常简单:
下面的 aardio 代码模仿了 switch 函数的主要操作:
var caseTable = {
caseValue1: function(){
print("参数值是 caseValue1")
};
caseValue2: function(){
print("参数值是 caseValue2")
};
caseValue3: function(){
print("参数值是 caseValue3")
};
default: function(){
print("没有找到匹配的值")
};
}
var switchValue = "caseValue1"
var func = caseTable[switchValue] or caseTable.default or default
func();
这种方法的关键是利用了 caseTable[switchValue]
这种速度极快的检索表操作以精简流程判断语句。当然,实际的 switch 函数要更复杂一些。
switch 可以用于检索任何可以存储在表索引中的值,例如:
//在参数 @2 指定的表中查找索引值为 2 的函数,然后执行
switch(2,{
[1]: λ() print("One");
[2]: λ() print("Two"); //匹配成功,输出 2 。
[3]: λ() print("Three");
},λ() print("Default") )
上面的 λ
等价于 lambda
关键字, lambda 是匿名函数的简化写法。
参考链接:lambda 表达式