スウィフト-コントロールフロー

4515 ワード

3種類の制御フロー

  • ループ
  • のための

  • の間、繰り返します

  • 条件文
  • ならば
  • のスイッチ

  • 制御転送文
  • を続けます
  • ブレーク
  • フォールスルー
  • リターン
  • スロー
  • フォーループ


    forループは、配列の中の項目、辞書、集合、数字の範囲、文字列の文字などのシーケンスを反復するために使用されます.
    例:
    let names = ["Anna", "Alex", "Brian", "Jack"]
    for name in names {
        print("Hello, \(name)!")
    }
    
    別の間隔で部分的にループした後にStrideを使用します.
    Inループは、シーケンス型プロトコルに従う限り、独自のクラスやコレクション型を含む任意のコレクションを反復するために使用できます.

    一方ループ


    反復の数が最初の反復が始まる前に知られていないとき、ループを使用してください.
    種類のwhileループ

  • 一方、
  • での状態を評価します

  • 一方、
  • の状態を評価しながら繰り返します

    If


    この条件がtrueの場合にのみ、文の集合を実行します.falseの場合、現在の場合はelse節の文を実行します.else節はオプションです.
    例:
    temperatureInFahrenheit = 90
    if temperatureInFahrenheit <= 32 {
        print("It's very cold. Consider wearing a scarf.")
    } else if temperatureInFahrenheit >= 86 {
        print("It's really warm. Don't forget to wear sunscreen.")
    } else {
        print("It's not that cold. Wear a t-shirt.")
    }
    
    複数のelse節を一緒に連鎖させることができます

    スイッチ


    switch文は、複数の潜在的な状態に対応するためにif文に代わるものを提供します.それは値をとり、いくつかの可能なマッチングパターンに対してそれを比較します.次に、適切なコードブロックを実行します
    すべてのswitch文は徹底的でなければなりません.すなわち、考慮されているタイプのあらゆる可能な値はスイッチケースの1つによってマッチされなければなりません.すべての可能な値のケースを提供するのが適切でないならば、あなたはデフォルトのケースを定義することができます
    例:
    let someCharacter: Character = "z"
    switch someCharacter {
    case "a":
        print("The first letter of the alphabet")
    case "z":
        print("The last letter of the alphabet")
    default:
        print("Some other character")
    }
    
    複合ケースは、コンマによって切り離されるケースで2つの値を結合するのに用いられることができます.
    例:
    case "a", "A":
        print("The letter A")`
    
    スイッチケースの値は範囲でありえます
    example : 
    `case 0:
        naturalCount = "no"
    case 1..<5:
        naturalCount = "a few"
    case 5..<12:
        naturalCount = "several"
    
    タプルは、同じswitch文で複数の値をテストするために使用できます.Tuplesアンダースコアとともに、ワイルドカードのパターンとしても知られている任意の可能な値に一致する文字.
    例:
    switch somePoint {
    case (0, 0):
        print("\(somePoint) is at the origin")
    case (_, 0):
        print("\(somePoint) is on the x-axis")
    case (0, _):
        print("\(somePoint) is on the y-axis")
    default:
        print("\(somePoint) in plane")
    }
    
    Value Bindings -スイッチケースは、ケースの本体で使用するために、値または値を一時的な定数または変数に一致させることができます.
    例:
    switch somePoint {
    case (let x, 0):
        print("on the x-axis with an x value of \(x)")
    case (0, let y):
        print("on the y-axis with a y value of \(y)")
    case let (x, y):
        print("somewhere else at (\(x), \(y))")
    }
    
    WHERE句はスイッチを使用して追加条件をチェックできます.
    例:
    switch somePoint {
    case let (x, y) where x == y:
        print("(\(x), \(y)) is on the line x == y")
    case let (x, y) where x == -y:
        print("(\(x), \(y)) is on the line x == -y")
    case let (x, y):
        print("(\(x), \(y)) is just some arbitrary point")
    }
    
    複合ケースは、値結合を含むこともできます.複合ケースのパターンの全ては、値結合の同じセットを含まなければなりません
    例:
    switch somePoint {
    case (let distance, 0), (0, let distance):
        print("On an axis, \(distance) from the origin")
    default:
        print("Not on an axis")
    }
    

    制御転送文


    続行


    continue文ループの現在の反復を停止し、ループを通して次の反復の開始時に再び開始します

    ブレイク


    breakステートメントは、制御フロー文全体の実行を終了します.これは、スイッチまたはループステートメントで早期に終了するために使用することができます.

    フォールスルー


    スイッチケース本体の内部で使用することができます.
    例:
    switch integerToDescribe {
    case 2, 3, 5, 7, 11, 13, 17, 19:
        description += " a prime number, and also"
        fallthrough
    default:
        description += " an integer."
    }
    

    ラベル文


    これは、ネストしたループ/ネストされた条件文を中断または継続するために使用することができます.
    例:
    outerLoop : for element1 in array1{
        for element2 in array2{
            if(element1 == element2){
                continue outerLoop
            }
        }
        uniqueElemetsInArray1.append(element1)
    }
    print(uniqueElemetsInArray1)  //[21, 13, 5]