LoginSignup
0
1

More than 3 years have passed since last update.

swift実践入門output Chapter5

Posted at

制御構文

条件分岐、繰り返し、遅延実行、パターンマッチ
プログラムの実行フローを制御する構文。制御フローの制御には条件分岐や繰り返しなどがあり、それを組み合わせ実行し自在に操る

if 文 条件の成否による分岐

chapter5.swift
let value = 5

if value <= 4 {
    print("valueは4以下")
}else {
    print("valueは5以上")
}

if let文 値の有無による分岐

オプショナル型とは変数にnilの代入を許容するデータ型で、反対に非オプショナル型はnilを代入できません。オプショナル型の変数にはデータ型の最後に「?」か「!」をつけます。

chapter5.swift
let optionalA = Optional(1)

if let a = optionalA {
    print("値は\(a)です")
}else {
    print("値は存在しません")
}

let optionalB = Optional("b")
let optionalC = Optional("c")

if let b = optionalB, let c = optionalC{
    print("値は\(b)\(c)ですよ")
}else {
    print("ない")
}

guardl文 条件不成立時に早期退出する分岐

guard文は、条件を満たさない場合の処理を記述する構文です。
条件を満たさない場合には、メソッドを終了したり、繰り返し処理を終了したり、スコープを抜けるための処理を書く必要がある。

guard文を使って条件を満たさない場合に処理を抜けるコード

chapter5.swift
//guard 条件式 else {
//  条件式がfalseの場合実行される文
//  guard文が記述されているスコープ文に退出する必要がある
//}

func someFunction() {
    let value = -1

    guard value >= 0 else {
        print("0未満の値")
        return
    }
    print(value)
}
someFunction()

guard文のスコープ外への退出の強制

chapter5.swift
func printIfPositive(_ a: Int) {
    guard a > 0 else {
        return
    }
    print(a)
}
printIfPositive(6)

guard文で宣言された変数や定数へのアクセス

guard let文とif letぶんの違いは
guard let文で宣言された変数や定数は guard let文以降で利用可能という点

chapter5.swift
func someFONCTION() {
    let a :Any = 3

    guard let int = a as? Int else {
        print("aはInt型ではありません")
        return
    }
    print("値はInt型の\(int)です")
}
someFONCTION()

func checkInt(num:Int) {
    guard num >= 0 else {
        print("マイナスです")
        return
    }
    print("プラスです")
}

checkInt(num:-10)
checkInt(num:10)

switch文 複数のパターンマッチによる分岐

chapter5.swift
let r = -1
switch  r {
case Int.min ..< 0:
    print("rは負の数")

case 1 ..< Int.max:
    print("rは正の数")
default:
    print("aは0")
}

ケースの網羅性のチェック

chapter5.swift
enum SomeEnum {
    case foo
    case bar
    case baz
}

let foo = SomeEnum.foo

switch foo {
case .foo:
    print(".foo")

case .bar:
    print(".bar")

case .baz:
    print(".baz")

}

whereキーワード  ケースにマッチする条件の追加

chapter5.swift
let optionalP: Int? = 12

switch optionalP {
case .some(let a) where a > 10:
    print("10より大きい値\(a)が存在します")
default:
    print("値が存在しない、もしくは、10以下")
}

let g = 1

switch g {
case 1:
    print("実行される")
    break
    print("実行されない")
default:
    break
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1