強制アンラップしても落ちないmapオペレータを作った(けど…)


Fortifyを使ってcompactMap的なのを作ったら、便利なのではと思って書いてみた。

SafeMap

使う前

let paths = ["https://image.com", "", "あああ", "http://image.jp/"]
let medias = paths.compactMap({ (path) -> Media? in
  guard let url = URL(string: $0) else { return nil }
  return Media(url: url)
})
print(medias)

使うと

let paths = ["https://image.com", "", "あああ", "http://image.jp/"]
let medias = paths.safeMap({ Media(url: URL(string: $0)!) })
print(medias)

こんな感じでsafeMapオペレータ内であれば、強制アンラップに失敗すると自動でmapの対象から外してくれる。

問題点

ということで、debug executableをオフにしないと実行時にちゃんとデバッガーが拾ってしまうのでした…。
デバッガー殺しながら開発するわけにも行かないし、あんまり実用的じゃないな