Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Swiftのソースコードを読む際に必要な基本知識

iOSアプリの開発をしようとサンプルのソースコードに手を出したんですが、Swiftの基本知識がないとなかなか読めず……。
「Swift実践入門」を読んで学んだSwiftのソースコードを読む際に必要な基本知識をここにまとめておきます。

Swift実践入門
https://www.amazon.co.jp/dp/477419414X

変数

変数を宣言する

var a: Int

定数を宣言する

let a: Int

型指定ありで変数を宣言する

let a: Int

型指定なしで変数を宣言する ※型推論

let a = 123

配列を宣言する

let vars: Array<Int>
let vars: [Int] = []

辞書を宣言する

let vars: Dictionary<Key, Value>
let vars: [String: Int] = [:]

型の種類

  • Any
  • Bool
  • Int
  • Float
  • Double

型にエイリアス名をつける

typealias AliasInt = Int

複数の型をまとめる

var touple: (Int, String)

型をキャストする

let a = "abc" as Any

キャストに失敗した場合は空を保持する

let a = "abc" as? Any

キャストに失敗した場合は強制終了する

let a = "abc" as! Any

関数

関数を宣言する

func 関数名(引数名: 型 = 初期値) -> 戻り値の型

引数名を外部と内部で分ける

(外部引数名 内部引数名: 型)

アンダースコアをつけることで呼び出す時に引数名(ラベル)を省略する

(_ 引数名: 型)

引数の変数に行った変更を外部にも反映する

(引数名: inout 型)

引数に関数を渡す

引数名: 渡す関数の引数の型 -> 渡す関数の戻り値の型

関数をジェネリクス関数にする

func 関数名<任意の型 | クラスかプロトコル>(引数名: 型 = 初期値) -> 戻り値の型

refs:
【Swift】ジェネリクスが使われているメソッドを理解する
https://tech.recruit-mp.co.jp/mobile/studying-swift-generitics/

nil に対応する

変数にnilを入れる場合は宣言する
※この宣言をしないと変数にnilをセットすることは許されない

let a: Optional<Int>
let a: Int?

nilが入っている可能性がある変数を呼び出すにはいくつかの方法がある

オプショナルバインディング

if let n = a {
  print(type(of: n))
}

オプショナルチェイン

var a: Array<Int>?
a?.first

?? 演算子

let n = a ?? 1

強制アンラップ

a!

制御

gurard文で早期退出する

func someFunction() {
  let value = -1

  guard value >= 0 else {
    print('bye')
    return
  }

  print(value) // 必ず0以上であることが保証されている
}

someFunction()

遅延実行する

var count = 0

func someFunction() -> {
  defer {
    count += 1
  }

  return count
}

someFunction() // 0
count // 1

パターンマッチ

let integer = 1
1 ... 5 ~= integer
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
7
Help us understand the problem. What are the problem?