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分支語句塊中最後一個語句(表達式)的值。

發佈了67 篇原創文章 · 獲贊 10 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章