はじめに
現場でXcode 15が導入されました。1
なんということでしょう!!
SE-0380 if and switch expressionsが使えるではありませんか
さっそく使ってみた
以下のコードを書きました
あれ??
nil
の型推論ができないのでエラーになっているっぽいです。
解決策 1
userInfo
の型を明記する。
func doStuff(_ message: String) -> [String: Any]? {
let userInfo: [String: Any]? =
if message.isEmpty {
nil
} else {
[NSLocalizedDescriptionKey: message]
}
return userInfo
}
解決策 2
nil
の型を明記する。
func doStuff(_ message: String) -> [String: Any]? {
let userInfo =
if message.isEmpty {
nil as [String: Any]?
} else {
[NSLocalizedDescriptionKey: message]
}
return userInfo
}
解決策 3
userInfo
を使うのをやめて、if文
をreturn
の引数にする。
func doStuff(_ message: String) -> [String: Any]? {
return if message.isEmpty {
nil
} else {
[NSLocalizedDescriptionKey: message]
}
}
Note: return
の後ろに改行を入れると警告が出ます。
解決策 4
return
すら要らない。
func doStuff(_ message: String) -> [String: Any]? {
if message.isEmpty {
nil
} else {
[NSLocalizedDescriptionKey: message]
}
}
お好みの方法でお楽しみください
いいわけ
三項演算子を使って、↓こうじゃないの?というご意見もあるかと存じますが、
SE-0380
を楽しんでみる趣旨から外れるので除外しております。
func doStuff(_ message: String) -> [String: Any]? {
message.isEmpty ? nil : [NSLocalizedDescriptionKey: message]
}
-
執筆時、既にXcode 16がリリースされておりますが。 ↩