swift – 有没有办法结合开关和包含?

swift – 有没有办法结合开关和包含?,第1张

概述假设我有三个包含扩展的集合: 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 假设我有三个包含扩展的集合:
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语句(即使它会稍微改变为逻辑),尤其是在使用枚举时,switch语句是更好的选择避免错误.

如果使用switch语句无法实现,我也会感谢任何优雅的替代方案.

我认为你的整个问题是你试图为每种类型维护3个独立集合,而不是直接将它们连接到给定的文件类型:
enum fileType: String {    case photo,unkNown}let extensions: [fileType: Set<String>] = [    .photo: ["jpg","tiff"],.vIDeo: ["mp4","mkv"],.audio: ["mp3","wma"]]func getType(of file: String) -> fileType {    return extensions.first { .value.contains(file) }?.key ?? .unkNown}
总结

以上是内存溢出为你收集整理的swift – 有没有办法结合开关和包含?全部内容,希望文章能够帮你解决swift – 有没有办法结合开关和包含?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1036003.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-24
下一篇2022-05-24

发表评论

登录后才能评论

评论列表(0条)

    保存