прежде всего эта часть: (f: (I, String) => O), это для меня совершенно странно
Это функция, беря кортеж из двух элементов типа I
и String
, и возвращает O
, почему в вызове метода он содержит код после символа {, переопределяет ли он исходный метод?
В вашем методе используется список с несколькими параметрами, а синтаксис последней группы параметров представляет собой определение блока, которое позволяет определить значение функции ((I, String) => O)
Например , если бы у нас был метод, который принимает функцию в том же списке параметров:
def foo(s: String, f: String => String)
Наша реализация выглядела бы так:
foo("hello", {
s => s + "world"
}
)
Однако, если бы мы использовали отдельную группу параметров :
def foo(s: String)(f: String => String)
Наша реализация выглядит так:
foo("hello") {
s => s + "world"
}
Что приятнее для глаз и лучше читается.
myMethod должен возвращать значение типа O, но в моем коде это никогда не затрагивало никакую переменную
Если вы добавите реализацию метода, мы сможем лучше показать вам, где он возвращает значение типа O