2

誰かが「 scala の関数は右に関連付ける」と言った場合、それはどういう意味ですか?

そして、その場合、結合性はどのように機能しますかInt => Int => Int

4

1 に答える 1

2

関数型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
于 2012-09-27T07:51:09.360 に答える