English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
この記事では、Swiftのネストされた関数とその使用例について学びます。
もし一つの関数他の関数の主体内に存在する場合、ネストされた関数と呼ばれます。
func funcname() { //外部関数の文 func anotherFuncname() { //内部関数の文 } }
ここでは、anotherFuncname関数がfuncname関数の主体内部に位置しています。
内部関数は、閉じた関数(外部関数)の内部でしか呼び出したり使用したりできませんので、注意してください。
func outputMessageByGreeting(_ message: String) { func addGreetingAndPrint() { print("Hello! \(message)") } addGreetingAndPrint() } outputMessageByGreeting("Jack")
运行该程序时,输出为:
Hello! Jack
上記のプログラムでは、outputMessageByGreeting()を閉じた関数からネストされた関数addGreetingAndPrint()が呼び出されました。
outputMessageByGreeting("Jack")は外部関数を呼び出し、外部関数内のaddGreetingAndPrint()はHello Jack!を表示します。
addGreetingAndPrint関数を呼び出すことは、outputMessageByGreeting関数の外ではできません。
ネストされた関数は、引数と戻り値を持つ関数を含むことができます。
func operate(with symbol: String) -> (Int, Int) -> Int { func add(num1: Int, num2: Int) -> Int { return num1 + num2 } func subtract(num1: Int, num2: Int) -> Int { return num1 - num2 } let operation = (symbol == "+) ? add : subtract return operation } let operation = operate(with: "+) let result = operation(2, 3) print(result)
运行该程序时,输出为:
5
在上面的程序中,
外部関数为operate(),返回值为Function类型 (Int,Int) -> Int。
内部(嵌套)関数为 add() 和 subtract()。
嵌套函数add()和subtract()的方式正在使用的封闭函数的外面operate()。这是可行的,因为外部函数返回这些函数之一。
我们已经将封闭函数operate()之外的内部函数用作operation(2,3)をプログラム内で呼び出します2,3)をコントロールタブに表示5。