Не могли бы вы объяснить мне, как написать сокращенную версию функции литерала?Как вы пишете сокращенную версию функционального литерала?
Я иду через this спрей учебник, в котором следующий код
val route: Route = { ctx => ctx.complete("yeah") }
архивируется в
val route: Route = complete("yeah")
где complete является функцией RouteDirectives.
Я не могу воспроизвести то же самое в моем коде, который
class Test
{
def testFunc(value : Int) {
println(value)
}
}
type MyType = Test => Unit
val asd : MyType = _.testFunc(10)
asd(new Test)
Если я пишу val asd : MyType = testFunc(10)
вместо этого я (очевидно) получаю ошибку
error: type mismatch;
found : Int(10)
required: Int => Unit
val asd : MyType = testFunc(10)
Так я думал, что может быть «полным» также является объектом с методом apply
. И действительно следующие работы
val route: Route = complete.apply("yeah")
Но я не вижу объекта. В отладчике он переходит в RouteDirectives.complete
, как и ожидалось.
Почему? Что мне не хватает?
Эй @robo. Я был озадачен тем фактом, что код Spray работает без '_.' – expert