Swiftベースの制御フロー

3203 ワード

Swiftは、タスクを複数回実行できるforループとwhileループ、特定の条件に基づいて異なるコード分岐を実行するif文とswitch文を選択し、他のコードにジャンプするbreak文とcontinue文を制御するC言語のようなプロセス制御構造を提供します.
Cの従来のfor条件のインクリメントサイクルに加えて、Swiftはfor-inサイクルを追加し、配列(array)、辞書(dictionary)、範囲(range)、文字列(string)、その他のシーケンスタイプをより簡単に遍歴するために使用されます.
Swiftのswitch文はC言語よりも強力です.C言語では、あるcaseがうっかりbreakを書き落としてしまうと、このcaseは次のcaseに「落ちる」ので、Swiftはbreakを書く必要がないので、このような「落ちる」ことはありません.Caseはまた、範囲マッチング、メタグループ(tuple)、および特定のタイプの説明を含むより多くのタイプのモードをマッチングすることもできる.switch case文で一致する値は、case体内の一時的な定数または変数によって決定されてもよいし、where文によってより複雑な一致条件が記述されてもよい.
1.if文
let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {
    if score > 50 {
        teamScore += 3
    } else {
        teamScore += 1
    }
}
print(teamScore)

if文では、if score{...}のようなブール式が必要です.このようなコードは間違っています.
2.ifとletを使用して値欠落を処理する
ifとletを一緒に使用して、値が欠落している場合を処理することができます.一部の変数の値はオプションです.オプションの値は、値が欠落していることを示す特定の値またはnilです.タイプの後に疑問符を付けて、この変数の値をマークすることはオプションです.
var optionalString: String? = "Hello"
optionalString == nil

var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {
    greeting = "Hello, \(name)"
}
print(greeting)

練習:optionalNameをnilに変更します.greetingは何ですか.else文を追加し、optionalNameがnilの場合greetingに異なる値を割り当てます.
変数のオプション値がnilの場合、条件はfalseと判断され、カッコ内のコードはスキップされます.nilでない場合、letの後ろの定数に値が割り当てられ、コードブロックでこの値を使用できます.
3.switch文
switchは任意のタイプのデータと様々な比較操作をサポートします.整数だけでなく、テストが等しいだけではありません.
let vegetable = "red pepper"
switch vegetable {
case "celery":
    let vegetableComment = "Add some raisins and make ants on a log."
    print(vegetableComment)
case "cucumber", "watercress":
    let vegetableComment = "That would make a good tea sandwich."
    print(vegetableComment)
case let x where x.hasSuffix("pepper"):
    let vegetableComment = "Is it a spicy \(x)?"
    print(vegetableComment)
default:
    let vegetableComment = "Everything tastes good in soup."
    print(vegetableComment)
}

練習:default文を削除して、どんな間違いがあるか見てみましょう.
switchで一致する句を実行すると、プログラムはswitch文を終了し、下に実行しないので、各句の最後にbreakを書く必要はありません.
4.for-in文
for-inを使用して辞書を巡回することができ、各キー値ペアを表すには2つの変数が必要です.
let interestingNumbers = [
    "Prime": [2, 3, 5, 7, 11, 13],
    "Fibonacci": [1, 1, 2, 3, 5, 8],
    "Square": [1, 4, 9, 16, 25]
]
var largest = 0
for (kind, numbers) in interestingNumbers {
    print(kind)
    for number in numbers {
        largest = number
        print(largest)
    }
}

練習:別の変数を追加して、どのタイプの数字が最大であるかを記録します.
ループで使用できます.範囲を表すには、伝統的な書き方を使ってもいいです.両者は等価です.
// for-in     
var firstForLoop = 0
for i in 0...3 {
    firstForLoop += i
}
print(firstForLoop)

5.while文
whileを使用して、条件が満たされないまでコードを繰り返し実行します.ループ条件は、先頭でも末尾でも構いません.
var n = 2
var number = 0

while n < 100 {
    number += 1
    n = n * 2
}
print(n,number)

var m = 2
repeat {
    m = m * 2
} while m < 100
print(m)

公衆番号[Swiftコミュニティ]に注目して文章のサンプルコードを取得し、微信を追加します:[FBY-fan]あなたをグループ交流に連れて行きます.