📱

iOSアプリ開発 - 1. Swift5.5の文法

2021/10/14に公開

概要

Swiftの文法をまとめます。

  • Swiftのバージョン : 5.5
  • Xcodeのバージョン : 13.0
# Swiftのバージョン確認
$ swift --version
swift-driver version: 1.26.9 Apple Swift version 5.5 (swiftlang-1300.0.31.1 clang-1300.0.29.1)
Target: x86_64-apple-macosx11.0

# Xcodeのバージョン確認
$ xcodebuild -version
Xcode 13.0
Build version 13A233

# 対話型実行環境を起動
$ swift

Welcome to Apple Swift version 5.4.2 (swiftlang-1205.0.28.2 clang-1205.0.19.57).
Type :help for assistance.
  1> print("Hello Swift")
Hello Swift

`control` + `D` => 停止

変数/定数

let 定数 =var 変数 = 値  # 型推論
var 変数:= 値  # 明示的に型を指定

let constant: Int = 1
var variable: String = "Hello Swift"

配列

var 変数名 = [1,2, ...]  # 型推論
var 変数名:[] = [1,2, ...]  # 明示的に型を指定

ディクショナリー

var 変数名 = [
  "キー1": "値1",
  "キー2": "値2",
  ...
]

// 型を明示
var 変数名: [キーの型:値の型] = [
  "キー1": "値1",
  "キー2": "値2",
  ...
]

集合(set)

//集合を作る
var 変数名:Set<> = [1,2, ...]

制御構文

条件文

if 条件式 {
    // ...
} else if 条件式 && 条件式 {
    // ...
} else if 条件式 || 条件式  {
    // ...
} else {
    // ...
}

比較演算子

ループ


関数

Functions — The Swift Programming Language (Swift 5.5)

func 関数(引数名:) -> 戻り値の型 {
  // ...
  return 戻り値
}

var y1 = 関数(引数名: a)


func 戻り値のない関数(引数名:) {
  // ...
}

戻り値のない関数(引数名: b)


func 複数の戻り値がある関数() -> (戻り値名1:, 戻り値名2:) {
  // ...
  return (戻り値1, 戻り値2)
}

let y2 = 複数の戻り値がある関数()
y2.戻り値名1
y2.戻り値名2


func オプショナルの戻り値がある関数() -> (戻り値名1:, 戻り値名2:)? {
  // ...
  return (戻り値1, 戻り値2)
}

if let y3 = オプショナルの戻り値がある関数() {
    print(y3.戻り値名1)
    print(y3.戻り値名2)
}

クラス/構造体(class/struct)

定義

struct 構造体 {
  // ...
}

class クラス {
  // ...
}

プロパティ/メソッド

class クラス名 {
   // ストアド・プロパティ (stored properties)
   let 定数のプロパティ:// コンストラクタ後は変更できない
   var 変数のプロパティ:// コンピューテッド・プロパティ (computed properties; 計算プロパティ)
   var 計算プロパティ:{
     get {
         // ...
         return 型のインスタンス
     }
     set(x) {
           // 引数xを使って値をセット
	 // 引数xは`set {`のように省略可能です。その場合、引数は`newValue`で参照可能
     }
   }
   var 呼び出し専用の計算プロパティ:{
     // 単一文であれば、returnは省略できる
     戻り値
   }
   
   // コンストラクタ
   init(引数1:, 引数2:) {
     self.定数のプロパティ = 引数1
     self.変数のプロパティ = 引数2
   }
   
   // インスタンスメソッド
   func メソッド(引数:) {
     // ...
   }
   
   // タイプメソッド
   static func スタティックメソッド(引数:) {
     // ...
   }
}

拡張

extension String {
  func hello() {
    return "Hello \(self)"
  }
}

参考文献

Discussion