Swiftのクロージャと制御構造を徹底解説!初心者でも理解できる使い方と活用法
生徒
「Swiftのクロージャって聞いたことあるけど、どうやって使うんですか?しかも制御構造と一緒に使うってどういうことですか?」
先生
「いい質問ですね。クロージャとは、小さな処理のかたまりのことで、関数のように使えます。そして、if文やfor文などの制御構造と組み合わせることで、より柔軟なコードが書けるようになるんですよ。」
生徒
「なるほど!でも、具体的にどうやって使うんですか?」
先生
「それでは、Swiftのクロージャと制御構造の組み合わせ方を、初心者でも分かるように順を追って説明していきましょう!」
1. クロージャとは?まずは基本を理解しよう
Swift(スウィフト)におけるクロージャとは、「処理のかたまり」を変数のように扱えるものです。簡単に言えば、関数をその場で定義して使うイメージです。
クロージャは、特にリストや配列を並び替えたり、繰り返し処理を簡潔に書いたりするときに活用されます。
例えば、以下のようなコードがクロージャの基本形です。
let greet = {
print("こんにちは、Swiftの世界へようこそ!")
}
greet()
ここではgreetという変数に、メッセージを表示する処理を持たせています。そしてgreet()と書くことで、それを実行できます。
2. 制御構造とは?Swiftのif文やfor文もチェック!
制御構造(せいぎょこうぞう)とは、プログラムの流れをコントロールする仕組みのことです。代表的なものに、以下のような構文があります。
- if文:条件によって処理を分ける
- for-in文:繰り返し処理をする
- while文:条件が合う限り繰り返す
このような制御構造とクロージャを組み合わせることで、柔軟で効率の良いプログラムを書くことができます。
3. クロージャとfor文の組み合わせ例
Swiftでは、for文とクロージャを一緒に使うことで、配列の中身を1つずつ取り出して何らかの処理を行う、というコードが非常にシンプルに書けます。
let names = ["さくら", "たろう", "はなこ"]
names.forEach { name in
print("こんにちは、\(name)さん!")
}
forEach(フォーイーチ)というのは、配列の中の要素を順番に処理してくれる関数で、中身の処理をクロージャで書くのがポイントです。
こんにちは、さくらさん!
こんにちは、たろうさん!
こんにちは、はなこさん!
4. 条件分岐とクロージャの活用
次は、if文のような条件分岐の中でクロージャを使うパターンです。
let isLoggedIn = true
let showMessage = {
print("ログイン成功です!")
}
if isLoggedIn {
showMessage()
}
このように、クロージャを事前に定義しておき、条件に合ったときだけ実行するという使い方もできます。
5. クロージャと配列のfilterメソッド
もう少し応用的な使い方として、filter(フィルター)というメソッドで、条件に合った要素だけを取り出すときにもクロージャが使えます。
let numbers = [1, 2, 3, 4, 5, 6]
let evenNumbers = numbers.filter { number in
return number % 2 == 0
}
print(evenNumbers)
[2, 4, 6]
filterの中で使っている{ number in ... }がクロージャです。2で割り切れる数字だけを取り出す処理をしています。
6. 引数付きクロージャで柔軟な処理
クロージャは、関数のように引数(ひきすう)を受け取ることもできます。
let sayHello = { (name: String) in
print("こんにちは、\(name)さん!")
}
sayHello("ゆうき")
こんにちは、ゆうきさん!
このように、使いたいタイミングで名前を渡して実行することができます。
7. クロージャの中に制御構造を入れることも可能
逆に、クロージャの中でif文やfor文を使うこともよくあります。
let numbers = [1, 2, 3, 4, 5]
let checkNumbers = {
for number in numbers {
if number % 2 == 0 {
print("\(number) は偶数です")
} else {
print("\(number) は奇数です")
}
}
}
checkNumbers()
1 は奇数です
2 は偶数です
3 は奇数です
4 は偶数です
5 は奇数です
このように、クロージャの中にforやifを入れて、少し複雑な処理も書けます。
8. 実生活でのイメージ:クロージャは料理のレシピ
初心者の方には、クロージャを「料理のレシピ」に例えるとわかりやすいかもしれません。
レシピを作っておけば、必要なときにその通りに作ることができますよね。それと同じように、クロージャは「どういう処理をするかを記録しておいて、あとで実行するもの」なんです。
制御構造は、「どのレシピを使うか決める判断」や「何回料理を作るか決めるタイマー」のようなものです。
Swiftを基礎から実践レベルまで学びたい人や、 iOSアプリ開発を本格的に始めたい人には、 定番の入門+実践書がこちらです。
Swift実践入門をAmazonで見る※ Amazonアソシエイト・プログラムを利用しています