1. ホーム
  2. swift

[解決済み] Swiftのswitch文での小なり大なり

2022-04-21 11:25:14

質問

についてよく知っています。 switch ステートメントに置き換えるにはどうしたらいいのでしょうか? switch :

if someVar < 0 {
    // do something
} else if someVar == 0 {
    // do something else
} else if someVar > 0 {
    // etc
}

解決方法は?

ここで、ひとつのアプローチを紹介します。仮に someVarInt またはその他の Comparable を使用すると、オプションでオペランドを新しい変数に代入することができます。これによって where というキーワードがあります。

var someVar = 3

switch someVar {
case let x where x < 0:
    print("x is \(x)")
case let x where x == 0:
    print("x is \(x)")
case let x where x > 0:
    print("x is \(x)")
default:
    print("this is impossible")
}

これは少し簡略化できます。

switch someVar {
case _ where someVar < 0:
    print("someVar is \(someVar)")
case 0:
    print("someVar is 0")
case _ where someVar > 0:
    print("someVar is \(someVar)")
default:
    print("this is impossible")
}

を避けることもできます。 where キーワードは範囲マッチングで完全に解決されます。

switch someVar {
case Int.min..<0:
    print("someVar is \(someVar)")
case 0:
    print("someVar is 0")
default:
    print("someVar is \(someVar)")
}