Как связать второй параметр в функции 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])(_ > _)