iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

Swift5.3 つまみ食い【SE-0276編】

SE-0276 - Multi-Pattern Catch Clauses

Currently, each catch clause in a do-catch statement may only contain a single pattern and where clause. This is inconsistent with the behavior of cases in switch statements, which provide similar functionality. It also makes some error handling patterns awkward to express. This proposal extends the grammar of catch clauses to support a comma-separated list of patterns (with optional where clauses), resolving this inconsistency.

参照: https://github.com/apple/swift-evolution/blob/master/proposals/0276-multi-pattern-catch-clauses.md#introduction

現在は、do-catch 構文の catch では、単一のパターンと where 句のみを含めることができますが、Swift5.3 からはこの文法が拡張され、パターンのコンマ区切りのリストがサポートされたようです👀

// swift5.2
do {
  try performTask()
} catch TaskError.someRecoverableError {
  recover()
} catch TaskError.someFailure(let msg) {
  showMessage(msg)
} catch TaskError.anotherFailure(let msg) {
  showMessage(msg)
}
// swift5.3
do {
  try performTask()
} catch TaskError.someRecoverableError {
  recover()
} catch TaskError.someFailure(let msg),
        TaskError.anotherFailure(let msg) {
  showMessage(msg)
}

参考

swift.org

github.com

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com