これは、結果の文字列への補間が望ましくない場合が多く、暗黙的にラップされていないオプションがある場合に特に驚く可能性があるため、このプルリクエストで行われた変更です。この変更の詳細については、こちらのメーリングリストをご覧ください。Optional(...)
プルリクエストの説明で述べたように(残念ながらXcodeではありませんが)–を使用するよりも警告を消すための少し良い方法の1つString(describing:)
は、補間しているもののオプションタイプにキャストを追加することです。
var i: Int? = 5
var d: Double? = nil
print("description of i: \(i as Int?)")
print("description of d: \(d as Double?)")
これは次のように一般化することもできますas Optional
:
print("description of i: \(i as Optional)")
print("description of d: \(d as Optional)")
Swift 5では、SE-0228によって導入された新しい文字列補間システムで、別のオプションは次のカスタムappendInterpolation
オーバーロードを追加することですDefaultStringInterpolation
。
extension DefaultStringInterpolation {
mutating func appendInterpolation<T>(optional: T?) {
appendInterpolation(String(describing: optional))
}
}
var i: Int? = 5
var d: Double? = nil
print("description of i: \(optional: i)")
print("description of d: \(optional: d)")
また、必要に応じて、引数ラベルを削除して、モジュール内(または、マークを付けた場合は特定のファイル内)で警告を完全に無効にすることもできますfileprivate
。
extension DefaultStringInterpolation {
mutating func appendInterpolation<T>(_ optional: T?) {
appendInterpolation(String(describing: optional))
}
}
var i: Int? = 5
var d: Double? = nil
print("description of i: \(i)")
print("description of d: \(d)")
個人的には、引数のラベルを付けておきたいと思います。