Как связать второй параметр в функции scala curry?

//a curry function
def find(a: Seq[Int])(sort: (Int, Int) => Boolean)

//My attempt
val findWithBiggerSort = find(_)((a,b) => a > b)

findWithBiggerSort не может работать, произошла ошибка компилятора:

scala> def find(a: Seq[Int])(sort: (Int, Int) => Boolean)
     | ={}
find: (a: Seq[Int])(sort: (Int, Int) => Boolean)Unit

scala> val findWithBiggerSort = find(_)((a,b) => a > b)
<console>:11: error: missing parameter type for expanded function ((x$1) => find(x$1)(((a, b) => a.$greater(b))))
       val findWithBiggerSort = find(_)((a,b) => a > b)
                                     ^

Как я могу связать второй параметр карри?
как насчет связать второй параметр, как это

def find(a: Seq[Int], b: String)(sort: (Int, Int) => Boolean)

1 ответ

Решение

У вас есть две проблемы:

Тип вашего sort функция неверна - вам нужен (Int, Int) => Boolean но вы предоставляете (Int, Int) => Int, Если вы измените его на:

val findWithBiggerSort = find(_)((a,b) => (a > b))

вы получаете ошибку за отсутствующий тип _ параметр предоставлен в find (_), Если вы предоставляете этот тип, он компилируется, т.е.

val findWithBiggerSort = find(_:Seq[Int])((a,b) => (a > b))

или же

val findWithBiggerSort = find(_:Seq[Int])(_ > _)
Другие вопросы по тегам