簡體   English   中英

swift:如何在switch case語句中替換if else

[英]swift: how to replace if else on switch case statements

我有這個if else檢查:

var aItem: CGFloat = 0

if item == 0 {
    aItem = 457

} else if item == 1 {
    aItem = 576

} else if item == 2 {
    aItem = 758

}

print(aItem)

我想用switch case語句替換這段代碼。 怎么做?

我試過了:

    var aItem: CGFloat = 0

    switch item {
    case _ where item == 0:

        aItem = 457

    case _ where item == 1:

        aItem = 576

    case _ where item == 2:

        aItem = 758

    default:
        print("this is impossible")
    } 

它是有效的但是最好的解決方案嗎? 也許可以以某種方式簡化這段代碼?

什么是更好用? if else還是切換案例陳述?

它應該寫成:

let aItem: CGFloat

switch item {
case 0:
    aItem = 457
case 1:
    aItem = 576
case 2:
    aItem = 758
default:
    aItem = 0
    print("this is impossible")
}

print(aItem)

如果您的item只能是0,1或2,我會這樣做:

let anItem: CGFloat = [457, 576, 758][item]

在這種情況下,使用if elseswitch之間幾乎沒有區別。 選擇你最喜歡的。 ifswitch有優勢。 使用哪種最符合您需要的代碼/邏輯。 或者,在這種情況下,不要使用任何一種。

這是另一個有趣的替代方案(例如,在初始化實例屬性時可能很有用:

struct SomeType {
    let someProperty: Int = {
        let x = 0

        switch x { // Unfortunately, `x` can't be an instance member of self.
        case 0: return 457
        case 1: return 576
        case 2: return 758
        default:
            fatalError("this is impossible")
        }
    }()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM