以下のSwift PlaygroundコードサンプルのaddTwoNumbers関数が、(Int、Int) - > Intの関数として "(+)"を返し、後で2つの数値を一緒に加算する方法を完全に失っています。単に "addTwoNumbers(2,2)"を呼び出します。Swift関数が数学演算子を単独で返すことはなぜ可能ですか?
この創造的な解決法はそこに存在しないと思われるので、私はSwiftのマニュアルで説明を見つけることができませんでした。私はStackOverflowの答えが他の質問への回答として同様のコードを投稿したが、なぜか "=(+)"が働いているとは決して説明しなかった。私は何が欠けていますか?
注意:私は演算子がファーストクラス関数であることを理解します。私は高次関数の概念も理解しています。私はトピックサンプル(+)にとどまるようにコードサンプルを短くしました。
let addTwoNumbers: (Int, Int) -> Int = (+)
print(addTwoNumbers(5,3)) //8
簡素にあることを
は注意してください。かっこ内の+をラップするとオブジェクトになりますか?したがって、2つの引数を指定して呼び出すと、2 + 2と等価になります。 –
@Carcigenicate:https://math.stackexchange.com/questions/168378/operator-vsfunctionからのコメント。「すべての演算子は関数です。したがって、関数が演算子(この場合は(+)も関数である)を返すとき、それを呼び出す唯一の方法は、print( "hello" )?言い換えると、2つの引数をとる+関数を呼び出していますが、+(2,2)を入力する代わりに、提供されたコードサンプルに従ってadd(2,2)をタイプする必要があります。 –
私の例と質問は、高次関数の領域のSwift言語に合わせていますが、あなたの答えはどの言語でもその概念をよりよく理解するための方向を示してくれます。 –