0
votes

I am trying to learn scala. In one of his lectures, when Martin Odersky talks about Function objects, he talks about how scala functions are expanded to a AnonFun class that implements FunctionN (where 1<=N<=22) trait with an apply method. As an example, he explains that the Anonymous function (x: Int) => x * x is gets expanded as the following class

new Function1[Int, Int] {
  def apply(x: Int) = x * x
}
new AnonFun

So my question is, why does Function1 take generic type [Int, Int]. Shouldn't one suffice?

1
One for the input type, and one for the return typeTyler

1 Answers

4
votes

The last type defines the type of the return value of your function. See this tutorial for further examples that illustrate this better.

Excerpt from the tutorial:

Int => Int
(Int, Int) => String
() => String

results in these function object types:

Function1[Int, Int]
Function2[Int, Int, String]
Function0[String]