0Pricing
Swift Academy · レッスン

クロージャとキャプチャの基本

クロージャの構文、省略引数、トレーリングクロージャ、キャプチャリスト、escapingとnon-escapingの違いを理解します。

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

導入

このレッスンではクロージャを紹介します。クロージャは受け渡し可能な、自己完結したコードブロックです。構文、省略引数、トレーリングクロージャ、キャプチャリスト、エスケープと非エスケープについて学びます。

クロージャの構文

クロージャは軽量な関数のように見えます。構文は{ (params) -> Return in ... }です。

let greet = { (name: String) -> String in
    return "Hello, \\(name)"
}
print(greet("Ada"))

省略引数

Swiftには、クロージャを簡潔にする$0や$1のような省略引数があります。

let doubled = [1,2,3].map { $0 * 2 }
print(doubled)

トレーリングクロージャ

クロージャが最後の引数である場合、括弧の外側に記述できます。これをトレーリングクロージャと呼びます。

func operate(_ x: Int, _ y: Int, _ f: (Int,Int)->Int) -> Int {
    return f(x,y)
}
let sum = operate(2,3) { $0 + $1 }
print(sum)

キャプチャの基本

クロージャは、周囲のスコープにある値(実行中のカウンターなど)をキャプチャします。

func makeCounter() -> () -> Int {
    var count = 0
    return {
        count += 1
        return count
    }
}
let counter = makeCounter()
print(counter())  // 1
print(counter())  // 2

キャプチャリストとエスケープ

保持サイクルを避けるには、[weak self]のようなキャプチャリストを使用します。クロージャはデフォルトで非エスケープです。呼び出し後も保存する場合は@escapingを付けます。

class Greeter {
    var name = "Ada"
    lazy var greet: () -> Void = { [weak self] in
        print("Hello", self?.name ?? "?")
    }
}
let g = Greeter()
g.greet()

キャプチャリストの確認

クイックチェック: キャプチャリストの役割は何ですか?

振り返り

振り返り: クロージャはインラインのコードブロックです。構文、省略引数、トレーリングクロージャを学び、リストでキャプチャを制御します。エスケープするクロージャは呼び出し後も存続し、非エスケープがデフォルトです。

よくある質問

「クロージャとキャプチャの基本」レッスンは無料ですか?

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

「クロージャとキャプチャの基本」で何を学びますか?

クロージャの構文、省略引数、トレーリングクロージャ、キャプチャリスト、escapingとnon-escapingの違いを理解します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「クロージャとキャプチャの基本」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. クロージャとキャプチャの基本
  2. キャプチャリスト — weak/unownedと値のキャプチャ
  3. escapingとnon-escaping、autoclosure
← Swift Academyに戻る