// match $matchResult = match ('1') { 1 => "Oh no!\n", '1' => "This is what I expected\n", }; echo'matchResult : '; echo$matchResult; // matchResult : This is what I expected
當 switch 寫了 case 卻沒有 break 的時候
撰寫 switch 的時候需要搭配 break,不然會繼續往下執行,這樣的特性或許在某些特殊用法中很不錯,但一般來說我們既不期望他繼續往下執行,也難免會忘記寫上 break,而如果使用 match ,他會在判斷成功的那一行就強制跳出去,不會再繼續往下執行,可以參考下面的例子
// match ----- switch result ----- bingo! echo"----- match result ----- \n"; echomatch ('bar') { 'foo', 'bar' => "bingo!\n", }; // output ----- match result ----- bingo!
錯誤訊息的比較
有時候在寫 switch 我們會漏掉一些 case 沒有定義,這時候的錯誤訊息與我們將這樣的 switch 轉換為 match 不同,match 的錯誤訊息會比 switch 的更加精確一些,看以下範例
// match echo"----- match result ----- \n"; $matchResult = match ('-') { '+' => "plus\n", }; echo$matchResult; // UnhandledMatchError : Unhandled match value of type string