書籍「たった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) // 12repeat-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) // []
