swift - 如果枚举的案例具有关联类型,是否可以在没有关联数据的情况下获取案例名称?
问题描述
鉴于此代码...
enum Label {
case barcode(String)
case qrRCode(String)
}
let label:Label = .barcode("barcode data")
print("The label's type is '\(label)'")
它打印
标签的类型是 'barcode("barcode data")'
我想弄清楚如何只打印
标签的类型是“条形码”
除了用硬编码字符串编写计算属性以匹配案例类型或手动修剪到开始括号之外,有没有办法做到这一点?
解决方案
是的。您要查找的字符串由具有关联值的枚举案例的唯一镜像子项的标签表示。
protocol CaseNameWithoutAssociatedValueStringConvertible: CustomStringConvertible { }
extension CaseNameWithoutAssociatedValueStringConvertible {
var description: String {
Mirror(reflecting: self).children.first!.label!
}
}
extension Label: CaseNameWithoutAssociatedValueStringConvertible { }
"\( Label.barcode("️♂️") )" // "barcode"
"\( Label.qrRCode("☠️") )" // "qrRCode"
推荐阅读
- php - 创建空表并插入数据
- vimeo - 显示没有密码的受密码保护的 Vimeo 视频
- python - Updating a python array without loops?
- google-cloud-platform - How to add cloudsql role to a service account via cloud-deployment-manager
- reactjs - 如何使用从 Java API 检索的数据呈现数据表组件来解决此问题?
- c# - 主键盘上 Enter 键的虚拟键码是什么?
- vert.x - 通过 Eclipse 运行 Vert.x (w/ES4X)
- numpy - 没有显式数组的二进制搜索
- java - 从 chrome 自定义选项卡获取下载回调
- linux - 使用 conda-build 创建包时如何精确 Perl 版本