首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

haXe语言中改善的switch.case语法

2013-02-03 
haXe语言中改进的switch...case语法haXe语言的switch...case语法乍看上去和C/Java等差不多,但实际上更严谨

haXe语言中改进的switch...case语法

haXe语言的switch...case语法乍看上去和C++/Java等差不多,但实际上更严谨和易用。

 

无需break

首先,haXe中的switch...case中无需break语句,这样就完全避免了因忘写break而造成运行期错误,我敢说这种错误几乎是每个类java语言程序员都犯过的吧。

那么,这是不是意味着fall through技巧也没法使用了呢?也就是类似下面的写法, 即B和C共享同一处理逻辑:

switch (flag) {
case FLAG_A:
     // do something
     break;
case B: // fall through
case C:
    // do something else
    break;
}

其实haXe语言用更优雅的方式给我们了解决方案,即case后面可以有多个逗号分隔的表达式,那么上例在haXe中就可写为:

switch (flag) {
    case FLAG_A:
         // do something
    case B, C:
        // do something else
}
这样的代码是不是更清晰和健壮呢?

 

case后可以是表达式

java等语言中的case后只能用数字常量,甚至字符串常量都不行,haXe的switch...case则灵活的多,可以用变量甚至表达式,如:

switch (v) {
    case 0:
        e1;
    case foo(1):
        e2;
    case 65, 90:
        e3;
    default:
        e4;
}

 

switch语句作为一个表达式是可以返回值的

其实这是haXe语言级的特性,haXe中的大部分(所有?待确认)控制语句其实都是作为表达式处理的,如if语句,switch语句等,具体看下面的例子:

var val = switch (v) {
    case 0:
        e1;
    case foo(1):
        e2;
    case 65, 90:
        e3;
    default:
        e4;
}

switch表达式的值就是适用case分支语句块中最后一个语句(表达式)的值。

热点排行