「たった1日で基本が身に付く! Swift アプリ開発 超入門」の感想・備忘録1

スポンサーリンク

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

コメント