enum Location { enum top { case left case Right case Center } enum Bottom { case left case Right case Center } enum left { case top case Bottom case Center } enum Right { case top case Bottom case Center } enum Center { case Center } }
如果我尝试用它运行一个switch语句,那么所有的枚举都不会出现,如果我尝试列出它们,我会收到一个错误:
func switchOverEnum(enumCase: Location) { switch enumCase { case .top: print("hey this dIDn't cause an error whoops no it dID") }}
错误是:在“位置”类型中找不到枚举案例“顶部”.
现在有一个问题here的版本,根据最有用的答案,应该这样做:
enum Location { enum topLocations { case left case Right case Center } enum BottomLocations { case left case Right case Center } enum leftLocations { case top case Bottom case Center } enum RightLocations { case top case Bottom case Center } enum CenterLocations { case top case Bottom case left case Right case Center } case top(topLocations) case Bottom(BottomLocations) case left(leftLocations) case Right(RightLocations) case Center(CenterLocations) }
哪个完全有效,但看起来有点笨重,或者不优雅,或者不像Swift一样.这真的是最好的方式吗?
解决方法 我认为用两个枚举和一个元组来更简洁地表达.在游乐场试试这个:enum Horizontalposition { case left case Right case Center}enum Verticalposition { case top case Bottom case Center}typealias Location = (horizontal: Horizontalposition,vertical: Verticalposition)let aLocation = Location(horizontal: .left,vertical: .Bottom)switch aLocation {case (.left,.Bottom): print ("left bottom")case (.Center,.Center): print ("center center")default: print ("everything else")}@H_403_2@ 总结
以上是内存溢出为你收集整理的嵌套枚举的最佳方法是通过Swift中的switch语句进行访问?全部内容,希望文章能够帮你解决嵌套枚举的最佳方法是通过Swift中的switch语句进行访问?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)