Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了swift – 有没有办法结合开关和包含?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

假设我有三个包含扩展的集合: 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 { $0.value.contains(filE) }?.key ?? .unkNown
}

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。