假设我有三个包含扩展名的集合:
let photos: Set = ["jpg", "png", "tiff"]
let videos: Set = ["mp4", "mov", "mkv"]
let audios: Set = ["mp3", "wav", "wma"]
并且一个简单的枚举类型:
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
case(即使这会稍微改变逻辑),特别是在使用枚举时,switch
语句是一个更好的选择,以避免错误。
如果无法使用 switch
语句实现此目的,我也会感激任何优雅的替代方法。
FileExtension
类型,它有一个fileType
属性,对应着文件类型,例如https://gist.github.com/hamishknight/c211c63e321df33d18e9f90c72d4a20f。 - Hamish