Swiftのtry?の仕様変更が採択された

公開日:2018-10-26
最終更新:2018-10-26

Swiftのtry?の仕様変更が採択された

採択アナウンス https://forums.swift.org/t/accepted-se-230-flatten-nested-optionals-resulting-from-try/17376

これまでのSwiftでは、try?オペレータは常にそのオペランド式のOptionalを返していた。式の返り値がOptionalだった場合、これは2重オプショナルになるため、取扱が面倒だった。

// Pattern 2: Introducing parentheses to let 'as?' flatten for us
if let x = (try? somethingAsAny()) as? JournalEntry {
    // use 'x' here
}

新仕様では、try?が二重オプショナルを生み出す場合、暗黙にflattenされ一重オプショナルになり、取り扱いやすくなる。

// Swift 4: 'Int??'
// Swift 5: 'Int?'
let result = try? database?.countOfRows(matching: predicate)

このような暗黙flattenはSwiftにおいてすでに存在している。 ?. によるメソッドチェーンがそうだ。

このような文法の下位互換を破壊する仕様変更は、 最近はなかなか見かけなかったのでワクワクする。

記事が少しでもいいなと思ったらクラップを送ってみよう!
90
+1
@omochimetaruの技術ブログ

よく一緒に読まれている記事

1件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
11/02 14:34

これはうれしいですね

目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする