def apply(f: Int => String, v: Int) = f(v)
Note: methods are automatically coerced to functions if the context requires this.
class Decorator(left: String, right: String) {
def layout[A](x: A) = left + x.toString() + right
}
object QuizfulTest extends App {
def apply(f: Int => String, v: Int) = f(v)
val decorator = new Decorator("[", "]")
println(apply(decorator.layout, 2015))
}
Execution yields the output:
[2015]
In this example, the method decorator.layout is coerced automatically to a value of type Int => String as required by method apply. Please note that method decorator.layout is a polymorphic method (i.e. it abstracts over some of its signature types) and the Scala compiler has to instantiate its method type first appropriately.
Login in to like
Login in to comment