[Swift]関数の返り値で関数を設定する
Swiftで関数の返り値に関数を設定する方法を紹介します。
Swiftで関数を返り値に設定する
簡単に言うと、returnで関数名を指定するだけでOKです。
シンプルに1(Int型)を返す関数を返り値に持つ関数を作成します。
func one() -> Int { return 1 }
func callOne() -> Int{ return one() }
print(callOne()) //結果 1
簡単過ぎる関数ですが、こんな感じになります。
ネストされた関数は返り値に指定できるか?
ここから色々実験をしていきます。ネストされた関数は返り値に設定できるのでしょうか?
さっそく見ていきましょう。
func one() -> Int { func nestOne() -> Int { return 1 } } func callOne() -> Int{ return nestOne() } print(callOne()) // error! use of unresolved identifier 'nestOne'
まあ、普通にエラーになりますよね。
では、ネスト元の関数ではどうでしょうか?
func one() -> Int { func nestOne() -> Int { return 1 } return nestOne() } func callOne() -> Int{ return one() } print(one()) // 1 print(callOne()) // 1
callOneの関数からは直接nestOneの返り値を呼び出すことはできませんが、ネスト元のone関数からは返り値に設定することができます。
結果的には、callOneでone関数を返り値に設定した時に、nestOneの返り値を取得することができました。