gpt4 book ai didi

ios - 使用元组 Swift 3 在单个 switch-case 中实现多个间隔

转载 作者:行者123 更新时间:2023-11-30 12:54:57 26 4
gpt4 key购买 nike

我是编程新手,我正在尝试进行多个条件的切换。我有一个标签,它以摄氏度或华氏度为单位获取温度,具体取决于设置的温度,我需要获取该值并根据温度间隔归属一些设置。我怎样才能在一个开关中管理它(如果可能的话),我知道如何使用 4 个开关来做到这一点,但它的代码很长......我尝试过这样的:

        let todayStringComponent = Double(tempLabel.text!)
let fahrStringComponent = Double(tempLabel.text!)
let yesterdayStringComponent = Double(yesterdayLabel.text!)
switch (celsUnitButtonBool, todayStringComponent!) {
case (true?, -100 ... -40) :
// gradientImageOutlet.image = UIImage(named: "thermo_01.png")!
if UIDevice.current.userInterfaceIdiom == .pad
{
temperatureViewCenterAxisCnstr.constant = 315
gradientHeight.constant = 0
animateChanges()
} else if UIDevice.current.userInterfaceIdiom == .phone
{
temperatureViewCenterAxisCnstr.constant = 315
gradientHeight.constant = 470

animateChanges()
}
case (true?, -39 ... -26):
// gradientImageOutlet.image = UIImage(named: "thermo_02.png")!
if UIDevice.current.userInterfaceIdiom == .pad
{
temperatureViewCenterAxisCnstr.constant = 275
gradientHeight.constant = 75

animateChanges()
} else if UIDevice.current.userInterfaceIdiom == .phone
{
temperatureViewCenterAxisCnstr.constant = 315
gradientHeight.constant = 470

animateChanges()
} default:
print("WTH")
}

是否可以在一个交换机中管理它,以便它可以执行以下操作:

1)检查是 Fahr 还是 Cels,

2)如果是 Cels 检查摄氏度的间隔并做一些事情

3)如果是 Fahr 检查华氏温度间隔并执行操作

4)对于昨天标签(与今天标签具有相同的间隔)执行其他操作。

希望有人能明白我的意思。谢谢。

最佳答案

将一些逻辑封装到枚举中会将客户端代码简化为以下内容:

let celsUnitButtonBool = true
let todayStringComponent = -50

let sample = Temperature(cellButtonIsPressed: celsUnitButtonBool,
value: todayStringComponent)

switch (sample, sample.value) {
case (.Fahrenheit, -100 ... -40):
break
case (.Celsius, -39 ... -26):
break
default:
break
}

Temperature 的实现相当简单。

enum Temperature {
case Fahrenheit(value: Int)
case Celsius(value: Int)
}

extension Temperature {
init(cellButtonIsPressed: Bool, value: Int) {
if cellButtonIsPressed {
self = .Celsius(value: value)
} else {
self = .Fahrenheit(value: value)
}
}

var value: Int {
switch self {
case .Fahrenheit(value: let value),
.Celsius(value: let value):
return value
}
}
}

关于ios - 使用元组 Swift 3 在单个 switch-case 中实现多个间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40525472/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com