swift2 如何使用enum简化并使其更好,快速学习,enum

fumotvh3  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(151)

我通过以下方式定义了一些范围

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

我真的很想使用Enum来完成这个任务,

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

我收到一个错误

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

有没有可能像上面那样定义一个枚举,如果是的话,我在这里遗漏了什么。

ql3eal8s

ql3eal8s1#

试着这样做:

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
        }
    }
}

然后您可以使用

rangeEnumVariable.range

或:

rangeEnum.range0_15.range
4si2a6ki

4si2a6ki2#

您最好尝试使用结构执行类似的操作。

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"
}

相关问题