在同一个枚举函数中调用 Swift 枚举案例
Posted
技术标签:
【中文标题】在同一个枚举函数中调用 Swift 枚举案例【英文标题】:Call Swift enum case within same enum function 【发布时间】:2020-06-02 20:44:11 【问题描述】:我正试图深入了解 Swift 枚举,并通过尝试从同一个枚举中的函数返回一个字符串来让自己脱离教程轨道...
enum topFiveBands: Int
case led_zeppilin = 1, queen, rush, pink_floyd, acdc
func printRating()
print("The band \(???) has been ranked no.\(self.rawValue) of all time")
var myFavBand = topFiveBands.acdc
myFavBand.printRating()
我的代码以一个隐式赋值开始,它列出了所有时间的前 5 个乐队(你们中的一些人可能不同意我的观点......)。在同一个枚举中,我有一个将打印的函数:
The band \(???) has been ranked no.\(self.rawValue) of all time
我选择了.acdc
,所以我正在寻找要返回的函数:
The band acdc has been ranked no.5 of all time
虽然我可以提取 rawValue (5),但我似乎找不到将 acdc
放入字符串的方法。
【问题讨论】:
【参考方案1】:只需使用self
:
func printRating()
print("The band \(self) has been ranked no.\(self.rawValue) of all time")
self
是对其自身值的引用,在本例中为 acdc
。
【讨论】:
您和 Emilio 的回答都如愿以偿。谢谢你。给 Emilio 的绿色勾号,因为我可以大写乐队名称(怪我的强迫症:))【参考方案2】:虽然您可以使用 self
,但我建议您不要这样做,因为使用 enum
名称时您有一些限制,例如必须使用 pink_floyd
。
相反,我建议添加一个 String
属性,该属性根据 enum
的值返回显示名称
var displayName: String
switch self
case .pink_floyd: return "Pink Floyd"
case ...: // The rest
func printRating()
print("The band \(displayName) has been ranked no.\(rawValue) of all time")
【讨论】:
以上是关于在同一个枚举函数中调用 Swift 枚举案例的主要内容,如果未能解决你的问题,请参考以下文章