6
Swiftの関数から関数を返すのが最も一般的な状況は何ですか?Swiftの別の関数から関数を返す場合
以下のコードでは関数を返すが、返す関数は返す関数の内部にあるため、実際には目的を見ていない。私が混乱している理由は、同じ機能を1つの機能で実現できるからです。
func person() -> ((String, Int) -> String) {
func info(name: String, age: Int) -> (String) {
return "\(name) is \(age) old"
}
return info
}
let nathan = person()
nathan("Nathan", 3)
print(nathan("Nathan", 3))
誰かが、関数を返すような一般的な状況を指摘できますか?
これはSwift(私が思う)だけでなく一般的なプログラミングの基本であるので、これを理解したいと思います。
これはプログラミングにとって基本的なものではない機能的プログラミングの概念です。これは、
Dictionary
ルックアップとして実行します。関数型プログラミングと 'currying'コンセプトについてお読みください。例:https://en.wikipedia.org/wiki/Curryingメリットの1つは、各関数が1つの引数しか取らないことです。 –@LaurentRivard curryingはswiftから削除される可能性があることに注意してください:https://github.com/apple/swift-evolution/blob/master/proposals/0002-remove-currying.md – luk2302
[私の答えはこちら] (http://stackoverflow.com/a/34566757/2442804)実際の返された/使用されたオブジェクトとしての関数クロージャの使用例については – luk2302