Вот моя функция:Как выполнить пользовательскую функцию, которая принимает и возвращает другую?
def partial1[A, B, C](a: A, f: (A, B) => C): B => C = (b: B) => f(a, b)
> partial1: [A, B, C](a: A, f: (A, B) => C)B => C
Здесь я вызвать функцию partial1
:
def fun(a: Int, b: Int) = a + b
> fun: (a: Int, b: Int)Int
val r = partial1(1, fun)
> r : Int => Int = <function1>
r(fun(1,3))
> res0: Int = 5
Так r
есть функция, которая принимает функцию в качестве параметра и возвращает Function1
(функцию с 1 параметром). Должно ли Int => Int
не быть Int, Int
, так как два параметра Int
s являются параметрами функции?
Почему я не могу реализовать Partial1
как partial1(1,(fun(1,3)))
, что вызывает ошибку компилятора: type mismatch; found : Int required: (?, ?) => ?
?
В каком положении возникает несоответствие типа? –
(Scala-компилятор обычно печатает проблемную строку кода и указывает на конкретное место в этой строке.) –
@ Ошибка Borsch-ошибки возникает в строке «partial1 (1, fun (2,3))» –