- Scala編程(第5版)
- (德)馬丁·奧德斯基等
- 652字
- 2022-05-06 15:51:50
7.5 match表達式
Scala的match表達式允許你從若干可選值(alternative)中選擇,就像其他語言中的switch語句那樣。一般而言,match表達式允許你用任意的模式(pattern)來選擇(參見第13章)。拋開一般的形式不談,目前我們只需要知道使用match可以從多個可選值中進行選擇即可。
我們來看一個例子,示例7.14中的腳本從參數列表中讀取食物名稱并打印這個食物的搭配食材。這個match表達式首先檢查firstArg,這個變量對應的是參數列表中的首個參數。如果是字符串"salt",則打印"pepper";如果是字符串"chips",則打印"salsa";則此類推。默認的樣例以下畫線(_)表示,這個通配符在Scala中經常被用來表示某個完全不知道的值。

示例7.14 帶有副作用的match表達式
Scala的match表達式與Java的switch相比,有一些重要的區別。其中一個區別是任何常量、字符串等都可以被用作樣例,而不僅限于Java的case語句支持的整型、枚舉和字符串常量。在示例7.14中,可選值是字符串。另一個區別是在每個可選值的最后并沒有break。在Scala中,break是隱含的,并不會出現某個可選值執行完成后繼續執行下一個可選值的情況。這通常是我們預期的(不直通到下一個可選值),代碼因此變得更短,也避免了一類代碼錯誤,使得程序員不會再不小心直通到下一個可選值了。
不過Scala的match表達式與Java的switch語句相比最顯著的不同在于,match表達式會返回值。在示例7.14中,match表達式的每個可選值都打印出一個值。如果我們將打印語句換成交出某個值,則相應的代碼依然能工作,如示例7.15所示。從這個match表達式得到的結果被保存在friend變量中。這樣的代碼不僅更短(至少字數更少了),它還將兩件不同的事情解耦了:首先選擇食物,然后將食物打印出來。

示例7.15 交出值的match表達式
- iOS Game Programming Cookbook
- Google Flutter Mobile Development Quick Start Guide
- Spring Boot+Spring Cloud+Vue+Element項目實戰:手把手教你開發權限管理系統
- Swift 3 New Features
- JavaScript前端開發與實例教程(微課視頻版)
- Oracle 18c 必須掌握的新特性:管理與實戰
- PySpark Cookbook
- Learning AngularJS for .NET Developers
- Java網絡編程實戰
- Python 3 數據分析與機器學習實戰
- Java Web從入門到精通(第2版)
- IBM RUP參考與認證指南
- Getting Started with hapi.js
- Unity 5 Game Optimization
- C語言從入門到精通(第5版)