日曜エンジニアのIT道場
ITを学び、DXに備える
    Swift

    Swift文法のポイント

    SwiftUIを扱う前に知っておくべき「Swiftの文法」のポイントをまとめました。

     

    Swiftの概要

    1. オブジェクト指向
    2. 構造体とクラスからインスタンスを作る
    3. 関数型プログラミングも取り入れている
    4. Playgroundでコードの練習が簡単にできる

     

    ①オブジェクト指向

    Swiftではすべてのデータはオブジェクト。

     

    ③関数型プログラミング

    Python、JavaScriptなどでも取り入れられている。シンプルに記述できる。

     

    ④Playgroundsでコードの練習が簡単にできる

    XCodeを開き、プロジェクトの新規作成「Swift Playgrounds App」を選ぶと、Swiftのエディタが使える。挙動の確認などに使えるので便利。

     

     

    データ型

    • 型を自動認識する型推論
    • 整数はInt型、小数はDouble型、文字列はString型が基本
    • オブジェクトはイニシャライズで生成する
    • データをまとめて管理する(タプル、配列、辞書)

     

    変数宣言

    var 変数名: 型

    var age: Int
    
    age = 29
    
    print(age)

     

    一行で記述してもよい

    var age: Int = 29

     

     

    定数

    let 定数名: 型

    let name: String = "鈴木一郎"

     

     

    式展開(文字列内に値を埋め込む)

    let name = "鈴木一郎"
    
    print("こんにちは\(name)さん") // こんにちは鈴木一郎さん

     

    型推論

    変数宣言と同時に値を代入する場合、型の指定を省略しても自動的に型を判定してくれる「型推論」機能がある。

    var height = 100

    以降、heightには数値型のみ代入可能

     

     

    オブジェクトの生成

    構造体やクラスからオブジェクトを生成するには、型名(引数)で初期化する。

    let now = Date()
    
    print(now)

     

     

    タプル(複数の値をまとめる)

    カンマ「,」区切りで、全体をカッコ「()」で囲む。 (値1, 値2, 値3, …)

    var person = ("鈴木一郎", 55, "佐藤次郎", 30, "田中三郎", 18)

    タプルの各要素には変数名.番号でアクセスできる。

    person.0

     

     

    要素に名前をつける

    値の前に名前:を記述して名前をつけることができる。 変数名.名前でアクセスできる。

    var customer1 = (number:1, name:"鈴木一郎", age:55)
    
    customer1.name // "鈴木一郎"

     

     

     

    制御構造

    • 条件分岐(if文とswitch)
    • 繰り返し(for-in文とwhile文)
    • 安全なプログラミングに必要なオプショナル型
    • オプショナル型の値を取り出すアンラップ

     

    繰り返し

     

    for-in文

    for 変数 in レンジ { 処理 }

     

    クローズドレンジ(最後の数値も含む)

    for num in 1...10 {
        print(num) // 1 2 3 4 5 6 7 8 9 10
    }

     

    ハーフオープンレンジ(最後の数値を含まない)

    for num in 1..<10 {
        print(num) // 1 2 3 4 5 6 7 8 9
    }

     

    配列のすべての値を出力

    let colors = ["赤", "黄色", "緑"]
    
    for i in colors {
        print(i) // 赤 黄色 緑
    }

     

     

    関数とクロージャ

    • 引数には引数ラベルを設定できる
    • クロージャ式でクロージャを生成する
    • クロージャ式の省略形

     

    クロージャとは

     

     

    構造体とクラス

    • 構造体は「struct」クラスは「class」で定義する
    • 構造体やクラスの仕様を設定するプロトコル
    • 構造体やクラスに機能を追加するエクステンション

     

    プロトコルとは

     

    エクステンションとは