免責事項:Swift noob
こんにちは、私は学習を始めたばかりですSwiftとSwiftプログラミング言語(WWDC中にリリースされたAppleの本))を経験していて、 'キーワードは。で使用されました
let vegetable = "red pepper"
switch vegetable {
case "celery":
let vegetableComment = "Add some raisins and make ants on a log."
case "cucumber", "watercress":
let vegetableComment = "That would make a good tea sandwich."
case let x where x.hasSuffix("pepper"):
let vegetableComment = "Is it a spicy \(x)?"
default:
let vegetableComment = "Everything tastes good in soup."
}
抜粋:Apple Inc.「The Swift Programming Language。」iBooks。 https://itun.es/us/jEUH0.l
誰かが同等のものを別の言語(Java、c ++、obj-cなど)で説明したり表示したりできるとしたら、すばらしいでしょう。
申し訳ありませんが、これはどこにもありませんでした。
Swiftのswitch
ステートメントは、他のほとんどの言語で使用されているステートメントよりもはるかに強力です。単に値のグループから選択するのではなく、パターンマッチングを使用して、評価するcase
を選択します。あなたの例から各case
を見てみましょう:
_case "celery":
_
超シンプル-これは文字列_"celery"
_にのみ一致します。
_case "cucumber", "watercress":
_
このケースは、どちらか文字列_"cucumber"
_または文字列_"watercress"
_と一致します。涼しい。他の言語では、おそらくこれらの両方を取得するためにフォールスルーケースを使用する必要があります。
_case let x where x.hasSuffix("pepper"):
_
このケースには、SwiftおよびCと比較した場合、Java switch
ステートメントに固有の2つの概念が含まれています。最初の概念は値バインディングです- -このステートメントの_let x
_の部分は、一致した値を、ケースの本体をスコープとする定数x
にバインドします。
次はwhere
句です。これはif
ステートメントと同様にブールテストなので、式がtrue
の場合にのみ大文字と小文字が一致します。この例では、x.hasSuffix("pepper")
はバインドされた値を調べ、それが_"pepper"
_で終わるかどうかを確認します。文字列_"red pepper"
_、_"green pepper"
_、および_"spicy hot pepper"
_はすべて一致しますが、_"peppercorns"
_は一致しません。
_default:
_
Swiftでは、switch
ステートメントは一致した値のすべての可能な値を使い果たす必要があるため、通常は_default:
_ケースブロックで終了して、以前に一致しなかった値を処理します。手動ですべてのオプションを使い果たす可能性があるため、これが表示されないのは、enum
をいくつかの値のみと一致させる場合のみです。
1つのifステートメントに複数のオプションのバインディングを含め、where句を使用してブール条件をチェックできます。
if let firstNumber = Int("4"), secondNumber = Int("42") where firstNumber < secondNumber {
print("\(firstNumber) < \(secondNumber)")
}
// prints "4 < 42