代码之家  ›  专栏  ›  技术社区  ›  mlynnerup

如何根据我提供的输入在Swift中打开枚举?[已关闭]

  •  1
  • mlynnerup  · 技术社区  · 8 年前

    我创建了下面的switch语句,根据我在weightType中输入的字符串返回一个双精度值。

    我想用枚举来代替它,这样它更灵活。我认为这是一个很容易的改变,但我已经尝试了各种各样的事情,我不能让它工作。

    谁能帮帮我吗?Thx!

    var weightType: String = "kettlebell"
    
    func returnWeightLimit() -> Double {
        switch weightType {
        case "barbell": return(132.0)
        case "kettlebell": return(70.5)
        case "dumbbell": return(115.0)
        default: return(0.0)
        }
    }
    
    let weightLimit = returnWeightLimit()
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Mike Henderson    8 年前

    使用原始值支持的枚举:

    enum WeightType: String {
        case barbell
        case kettlebell
        case dumbbell
    
        var weightLimit: Double {
            switch self {
            case .barbell: return 132.0
            case .kettlebell: return 70.5
            case .dumbbell: return 115.0
            default: return 0
            }
        }
    }
    

    示例:

    let str = "kettlebell"
    if let weightType = WeightType(rawValue: str) {
        print(weightType.weightLimit)
    } else {
        print("You provided the wrong rawValue")
    }