クロージャとキャプチャの基本
クロージャの構文、省略引数、トレーリングクロージャ、キャプチャリスト、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フィードバックを取得できます。ローカル設定は不要です。