微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – 使用关联值时获取枚举名称

我的枚举定义如下
enum Fruit {
   case Apple(associatedValue: String)
   case Orange(associatedValue: String)
 }

我有一个函数,它接受类型为Fruit的参数

func printNameOnly(fruit: Fruit) {
}

在这函数中,我想把枚举的情况作为一个字符串,即我想得到字符串“Apple”或“Orange”,而不考虑相关的值. Swift可以实现吗?

我显然可以编写一个函数,它接受水果枚举并使用case语句返回一个字符串,但我试图找到一种方法来避免这种情况,因为我想要的字符串是enum case name本身.

试试这个(Swift 3.1).涵盖相关或常规案例.
enum Fruit {
    case banana
    case apple(String)
    case orange(String)

    var label:String {
        let mirror = Mirror(reflecting: self)
        if let label = mirror.children.first?.label {
            return label
        } else {
            return String(describing:self)
        }
    }
}

print(Fruit.banana.label) // "banana"
print(Fruit.apple("yum").label) // "apple"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐