[Swift]関数の返り値で関数を設定する

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の返り値を取得することができました。



カテゴリー