how to simplify and make it better using enum, swift learning, enum

走远了吗. 提交于 2019-12-10 22:58:54

问题


I am defining some of ranges by following

let range0_15   =   0 ..< 15
let range15_30  =   15 ..< 30
let range30_45  =   30 ..< 45
let range45_60  =   45 ..< 60

I really want to use Enum for this by trying

enum range : Range<Int> {
    range0_15   =   0 ..< 15
    range15_30  =   15 ..< 30
    range30_45  =   30 ..< 45
    range45_60  =   45 ..< 60
}

And I am getting an error

Type 'CoreDataStach.range' does not comform to protocol RawRepresentable

Is it possible to define an enum like above and if it is yes, what I am missing right here.


回答1:


You might be better off trying something like this using a struct.

struct Ranges{
    static let range0_15   =   0 ..< 15
    static let range15_30  =   15 ..< 30
    static let range30_45  =   30 ..< 45
    static let range45_60  =   45 ..< 60
}

if Ranges.range0_15.contains(6){ //Test to true
    print("inside range")//Prints "inside range"
}



回答2:


Try like this:

enum rangeEnum : Int {
    case range0_15
    case range15_30
    case range30_45
    case range45_60

    var range:Range<Int> {
        switch self {
        case range0_15 : return 0 ..< 15
        case range15_30 : return 15 ..< 30
        case range30_45 : return 30 ..< 45
        case range45_60 : return 45 ..< 60
        }
    }
}

Then you can use your rangeEnumVariable.range

Or

rangeEnum.range0_15.range



来源:https://stackoverflow.com/questions/37932688/how-to-simplify-and-make-it-better-using-enum-swift-learning-enum

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!