aardio 文档

switch 函数

switch 函数类似 select case 语句,可以在一组数据中查找指定的值并执行对应的代码。

switch 利用查表法在指定表中检索值,并通过表的键值对映射获取并执行对应的函数。这种方法也被称为表驱动法( Table-Driven Methods )。当待检索的数据较多时,相比使用 select 或 if 语句,表驱动法精简了判断流程,速度也会快很多很多。

但是 switch 仅支持直接检索表中存储的值,如果需要进行更复杂的条件匹配,请参考 select case 语句 或者 if 语句

switch 是内置的保留函数,全局可用。

1. 函数原型:

switch( switchValue,caseTable,default,...)

2. 参数说明:

3. 执行操作:

4. 调用参数与返回值:

5. 示例:

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 表达式

Markdown 格式