書籍「たった1日で基本が身に付く! Swift アプリ開発 超入門」のまとめ。
点数
86点
感想
とてもわかりやすい内容だった。
後半のSpriteKitによるゲーム作成は面白かった。
いくつか誤記があったのが残念。
主な内容
変数の型を調べる
type(of: 変数)
var str = "Hello"
let num = 1
print(type(of:str)) // String
print(type(of:num)) // Int
演算子の前後のスペース
演算子の前後に半角スペースを入れることができるが、左右のどちらかだけにスペースを入れることはできない。
print(1+1) // 2
print(1 + 1) // 2
print(1+ 1) // エラー
文字列に変数を埋め込む
ダブルクォーテーションで括られた文字列中に\(変数)
と書くことで変数を埋め込むことができる。
var num = 100
print("numは\(num)です") // numは100です
switch文のdefault:は必須
default:がないとエラーになる。
var num = 100
switch num {
case 1:
print("case1です")
}
// エラー
caseに複数の値を指定する
caseにはカンマ区切りで複数の値を指定することができる。
var num = 100
switch num {
case 1,2:
print("1または2です")
default:
print("1,2以外です")
}
caseに範囲を指定する
- 閉範囲演算子
1...3
で1以上3以下 - 半開範囲演算子
1..<3
で1以上3未満
var num = 100
switch num {
case 1...100:
print("1以上100以下")
default:
print("1,2以外です")
}
for〜in文
構文
for 変数 in 範囲またはコレクション {
// 処理
}
var total = 0
for i in 1...5 {
total += i
}
print(total) // 15
カウンタ変数を使用しない場合
変数の部分にアンダースコアを置くというルールがある。
for _ in 1...5 {
print("!")
}
// !
// !
// !
// !
// !
降順
範囲演算子は「大きい値…小さい値」と書くことはできない。
Rangeオブジェクト(範囲演算子を()で囲む)のreversedメソッドで降順にすることができる。for 変数 in (範囲).reversed() {
// 処理
}
for i in (1...5).reversed() {
print(i)
}
// 5
// 4
// 3
// 2
// 1
繰り返し間隔の指定
for 変数 in stride(from: 開始値, to: 終了値, by: 間隔) {
// 処理
}
var total = 0
for i in stride(from: 1, to: 10, by: 3) {
total += i
}
print(total) // 12
repeat-while文
repeat {
// 処理
} while 条件式
var i = 0;
repeat {
print(i)
i += 1
} while i < 3
// 0
// 1
// 2
配列
宣言&初期化
var 変数 = [要素1, 要素2]
- 型を明記する場合は
let 変数:[データ型] = [要素1, 要素2]
- 空配列の作成は
let 変数:[データ型] = []
- letで宣言すると要素の追加・削除ができない
(JavaScriptの場合はconstで宣言しても要素の追加・削除ができるが、Swiftのletの場合は追加・削除ができないので注意)
サイズの取得
変数.count
要素の追加
変数.append(要素)
要素の挿入
変数.insert(要素, at: 位置)
全要素削除
変数.removeAll()
末尾の要素を削除
変数.removeLast()
位置指定で要素を削除
変数.remove(at: 位置)
全要素が条件を満たすかチェック
変数.allSatisfy {条件式}
{}内では、$0に要素がセットされている
※以下の記述から、引数とreturnを省略した表記方法である変数.allSatisfy({ (value1: データ型) -> Bool in
return 条件式
})
// 宣言&初期化
var arr = [10, 20, 30, 40, 50]
// サイズの取得
print(arr.count) // 5
// 全て偶数かどうか
print(arr.allSatisfy {$0 % 2 == 0}) // true
// 要素の追加
arr.append(60)
print(arr) // [10, 20, 30, 40, 50, 60]
// 要素の挿入
arr.insert(15, at: 1)
print(arr) // [10, 15, 20, 30, 40, 50, 60]
// 末尾の要素を削除
arr.removeLast()
print(arr) // [10, 15, 20, 30, 40, 50]
// 位置指定での要素削除
arr.remove(at: 0)
print(arr) // [15, 20, 30, 40, 50]
// 全要素削除
arr.removeAll()
print(arr) // []