Swift Academy · レッスン

型推論の仕組み

Swiftがコンテキストから型を推論する方法を確認します。

レッスン 1/413 ステップ

「型推論の仕組み」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

型推論とは

Swiftは、式のコンテキストから値の型を推論できます。型を明示的に記述する必要がない場合が多くあります。

let count = 42
let name = "Swift"
print(type(of: count))
print(type(of: name))

リテラルからの推論

整数リテラルからは Int が推論され、小数リテラルからは Double が推論され、引用符で囲まれたリテラルからは String が推論されます。

let a = 10
let b = 3.14
let c = "hello"
print(type(of: a), type(of: b), type(of: c))

イニシャライザからの推論

イニシャライザを呼び出すと、その結果の型によって変数の型が推論されます。

let pi = Double.pi
let flag = Bool(true)
print(type(of: pi))
print(type(of: flag))

関数の戻り値からの推論

関数呼び出しの結果を代入した変数には、その関数の戻り値の型が適用されます。

func makeGreeting() -> String {
    return "Hi"
}
let g = makeGreeting()
print(type(of: g))

コレクションでの推論

配列リテラルと辞書リテラルでは、中の値から要素の型が推論されます。

let nums = [1, 2, 3]
let pairs = ["a": 1, "b": 2]
print(type(of: nums))
print(type(of: pairs))

双方向の推論

Swiftは両方向から推論します。値から変数へ推論するだけでなく、宣言された型からリテラルへも推論します。

let x = 5            // Int inferred from literal
let y: Double = 5   // literal adapts to Double
print(type(of: x), type(of: y))

式全体にわたる推論

コンパイラは式全体の型をまとめて解決し、すべての演算が有効になる型を選択します。

let result = 2 + 3 * 4
print(result)
print(type(of: result))

記述量を減らす型推論

型推論によってコードをすっきり保てます。リテラルがすでに String を示している場合、let names: [String] = [...] と書くのは冗長です。

let names = ["Ada", "Bob", "Cleo"]
print(names.count)

型推論に失敗する場合

コンパイラが単一の型を決定できない場合はエラーになり、型注釈が必要です。空のコレクションは典型的な例です。

let empty: [Int] = []
print(empty.isEmpty)

型推論は静的に行われる

型推論はコンパイル時に行われます。一度推論された型は固定され、Swiftは動的型付けではありません。

var n = 10
// n = "text" // would be a compile error
n = 20
print(n)

型推論とパフォーマンス

型推論による実行時のコストはありません。コンパイラはバイナリを生成する前に型を解決するため、推論を使ったコードは型を注釈したコードとまったく同じ速さで実行されます。

let total = (1...100).reduce(0, +)
print(total)

確認テスト

型推論の理解度をテストしてください。

まとめ

型推論により、Swiftはコンパイル時に、リテラル、イニシャライザ、戻り値、周囲のコンテキストから型を推論できます。実行時のコストなしで記述量を減らせますが、単一の型を決定できない場合(空のコレクションなど)は推論に失敗します。

let a = 1
let b = 2.0
let c = "x"
print(type(of: a), type(of: b), type(of: c))
無料で開始

AI チューターと学ぶ Swift — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
122
レッスン
409

よくある質問

「型推論の仕組み」レッスンは無料ですか?

はい。「型推論の仕組み」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「型推論の仕組み」で何を学びますか?

Swiftがコンテキストから型を推論する方法を確認します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「型推論の仕組み」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 型推論の仕組み
  2. 明示的なアノテーションを追加するタイミング
  3. リテラルの型推論
  4. クロージャの型推論
← Swift Academyに戻る