楽水

人々の創造が自由に表現できる舞台づくり

Swift

Swiftの関数のネストについてわかりやすく解説

投稿日:

Swiftでは、関数のスコープ内に便利な機能を包むために、他の関数の中に関数を記述することができます。
ネストされた関数を別のスコープで使用できるように、ネストしている関数からネストされた関数を返すこともできます。
下の例では、stepForward、stepBackwardがネストされた関数で、条件によってchooseStepFunctionの呼び出し元に返されるようになっています。

func chooseStepFunction(backwards: Bool) -> (Int) -> Int {
func stepForward(input: Int) -> Int { return input + 1 }
func stepBackward(input: Int) -> Int { return input – 1 }
return backwards ? stepBackward : stepForward
}

下の例の場合、chooseStepFunctionを呼び出した結果である関数stepForwardが定数moveNearerToZeroに設定され、currentValueが0になるまで使用されています。

var currentValue = -4
let moveNearerToZero = chooseStepFunction(currentValue > 0)
// moveNearerToZero はネストされた関数 stepForward() を参照
while currentValue != 0 {
print(“\(currentValue)… “)
currentValue = moveNearerToZero(currentValue)
}
print(“zero!”)
// -4…
// -3…
// -2…
// -1…
// zero!

今回は、Swiftの関数のネストについて解説しました。
参考本
[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus

-Swift
-,

執筆者:

関連記事

Swiftの列挙型をわかりやすく解説

プログラムを作成するとき、曜日(月曜日、火曜日、水曜日、木曜日、金曜日、土曜日、日曜日)やカードのスート(スペード、クラブ、ダイヤ、ハード)のように決まった範囲の要素(種類)を持つ集合を扱う場合がある …

Swiftのメソッドをわかりやすく解説

メソッドは、特定の型に関連した関数です。 クラス、構造体、列挙型はすべて、型のインスタンスを扱う特定のタスクと機能を持つインスタンスメソッドを定義することができます。 また、クラス、構造体、列挙型は、 …

Swiftの関数【Swiftの関数の書き方をわかりやすく解説】

Swiftの関数は、特定のタスクを実行する独立したコードブロックです。 Swiftの関数は、パラメータ名の無いシンプルな C スタイルの関数から、パラメータごとにローカルと外部のパラメータ名がある複雑 …

Swiftクロージャによる強い参照の循環参照とその解決

Swiftのメモリ管理 では、 2 つのクラスインスタンスのプロパティが互いに強い参照を持つことで、どのようにして強い参照の循環参照が生成されるのかを見てきました。 また、強い参照の循環参照を切るため …

Swiftの関数のパラメータ【引数ラベルなどについてわかりやすく解説】

Swift 関数には、パラメータ名の無いシンプルな関数から、引数ラベルや各種パラメータがあるメソッドまで表現できる柔軟性があります。 パラメータは、関数の呼び出しを簡略化するためのデフォルト値を持つこ …