Давайте предположим, что у меня есть три набора, содержащие расширения:
let photos: Set = ["jpg", "png", "tiff"]
let videos: Set = ["mp4", "mov", "mkv"]
let audios: Set = ["mp3", "wav", "wma"]
и простой enum как:
enum FileType {
case photo, video, audio, unknown
}
Теперь я хочу реализовать функцию, которая возвращает опцию FileType
, основываясь на том, какая строка передана ей и какой набор содержит ее:
func getType(of file: String) -> FileType {
if photos.contains(file) { return .photo }
if videos.contains(file) { return .video }
if audios.contains(file) { return .audio }
return .unknown
}
Это должно работать, как и ожидалось, но мне интересно, есть ли подход для преобразования оператора if
в один switch
случай (даже если он немного изменится в логику), особенно при работе с перечислениями switch
оператор (ы) - лучший выбор, чтобы избежать ошибок.
Если это невозможно сделать с помощью оператора switch
, я также буду признателен за любую элегантную альтернативу (ы).