我想制作一个通过改变速度来创建不同关卡的应用程序。但是我得到了'预期参数类型':'"错误,我不知道如何使用enum。
enum Difficulty {
case easy(timeInterval: 1)
case medium(timeInterval: 0.6)
case hard(timeInterval: 0.3)
}
@IBAction func easyButton(_ sender: Any) {
}
@IBAction func mediumButton(_ sender: Any) {
}
@IBAction func hardButton(_ sender: Any) {
}
override func viewDidLoad() {
super.viewDidLoad()
}
不能硬编码枚举大小写的相关值。相反,声明一个属性,该属性将为每种情况返回所需的值:
enum Difficulty {
case easy
case medium
case hard
var timeInterval: TimeInterval {
switch self {
case .easy:
return 1
case .medium:
return 0.6
case .hard:
return 0.3
}
}
}
用法:
let difficulty: Difficulty = .easy
let timeInterval = difficulty.timeInterval
由于语法错误,您的代码未编译。为了解决你的任务,你可以从Double
继承enum
,并使用rawValue
来获得难度值(https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html#ID149)。
enum Difficulty: Double {
case easy = 1
case medium = 0.6
case hard = 0.3
}
let timeInterval = Difficulty.medium.rawValue
print(timeInterval) // Prints "0.6"