誰かが「 scala の関数は右に関連付ける」と言った場合、それはどういう意味ですか?
そして、その場合、結合性はどのように機能しますかInt => Int => Int
関数型Int => Int => Intは。と同等Int => (Int => Int)です。言い換えれば、=>最初に右側にあるものをグループ化するか、または、右側に関連付けられます。
この型Int => (Int => Int)は、を受け入れる単一引数関数を定義し、Intその戻り型は関数fromからIntまでIntです。
では、そのような関数の例は何ですか?sumこのタイプで呼び出される関数を書くことができます:
val sum: Int => Int => Int = {
(a: Int) =>
{
(b: Int) =>
a + b
}
}
したがって、引数をsum取り、引数を受け入れてとの合計を返す新しいa関数を返します。bab
scala> val sumWith3 = sum(3) // `sum` takes an Int argument
sumWith3: Int => Int = <function1> // notice the return type of `Int => Int`
scala> sumWith3(5) // takes an Int argument
res0: Int = 8 // returned an Int