📱
iOSアプリ開発 - 1. Swift5.5の文法
概要
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