通过引入switch表达式来增强Java switch语句
去年12月下旬,我發布了“ Switch Expressions Coming Java? 從那時起,進行了廣泛的討論,表達了意見分歧,現在就Java的switch表達式的未來達成了共識。 我曾嘗試在12月的博客文章中評論與switch表達式有關的一些主要發展。 但是,我覺得這周琥珀色觀察者郵件列表上的Brian Goetz消息標題“ [switch] switch的進一步統一 ”保證了有關Java switch表達式的新博客文章。
格茨(Goetz)在結束講話時提醒大家最終游戲不是Java開關表達式 。 相反,Goetz指出:“開關表達式應該只是實現實際目標的無可爭議的起點,它是一種更具表現力和靈活性的開關構造,可在更廣泛的情況下工作,包括支持模式,并且沒有敵意設置為null,用作表達式或語句等。”
格茨還指出,“轉機確實帶來了很多負擔”,他指出,“這種負擔在討論中產生了可預見的干擾。” 格茨指出:“最糟糕的結果是……發明一種與開關相似但不完全相同的新結構……而不能100%替代當今的古怪開關。” 考慮到這種擔憂,最初提出的開關表達式語法被舍棄了,因為它使討論朝著“最糟糕的可能結果”邁進了一步。
新的交換機統一提議(稱為“ Unification Attempt#2” [UA2])建議“所有交換機都可以支持舊樣式(冒號)或新樣式(箭頭)大小寫標簽,但必須堅持一種情況給定開關中的標簽。” 這意味著給定switch的case標簽必須全部使用我們今天在switch語句中使用的“冒號”語法或新提議的“ arrow”語法,但不能在同一switch同時使用。
開發人員可能會選擇一種形式而不是另一種形式(“冒號”與“箭頭”),這是有原因的。 Goetz強調了與switch的當前提議相關聯的“箭頭”語法的一些優點:“以全箭頭的形式,人們討厭開關的所有東西-需要說出中斷,失敗的風險以及可疑的作用域-所有走開。”
Goetz在本文中介紹了各種“開關形式”的“結構屬性”如何驅動“控制流和作用域規則”。 如下表所示。
| switch我們知道和“愛”,但增強了 | break返回的值類似于return |
語句/冒號的“語法簡寫”(上)以及
| 箭頭( -> )指向返回值 |
Goetz總結了上表顯示的內容:“冒號形式為您提供了舊的控制流,而箭頭形式為您提供了新的控制流。 并且可以用作語句或表達式。 沒有人會因為混淆而感到困惑。” 他還特別描述了上表左下角的結構(帶有“ arrow”語法的switch語句):“ Switch語句現在具有更簡單的(箭頭)風格,沒有失敗,沒有奇怪的作用域并且沒有大多數時候需要說休息。 可以用這種方式重寫許多開關,甚至可以先教這種形式。”
Goetz的總結總結了他的文章:
結果是一個具有現代和傳統風格的開關構造,它支持表達式或語句。 您可以立即查看開關的中間,并告訴(通過箭頭還是冒號)它是否具有舊版控制流。
迄今為止 ,對擬議的“統一嘗試#2”的總體反應是壓倒性的,但并非沒有預期的持續擔憂 。 加文·比爾曼(Gavin Bierman) 總結了這一建議 ,他說:“這實際上是與增強而不是與新結構相對應的一切”,并指出:“在撰寫本文時編寫修訂的規范–準備好!
翻譯自: https://www.javacodegeeks.com/2018/04/enhancing-java-switch-statement-with-introduction-of-switch-expression.html
總結
以上是生活随笔為你收集整理的通过引入switch表达式来增强Java switch语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 此网站已备案什么意思(此网站已备案)
- 下一篇: (tar.gz linux)