Есть ли синтаксис, позволяющий использовать параметры типового типа в литералах функций? Я знаю, что могу обернуть его в методе, например:
def createLongStringFunction[T](): (T) => Boolean = {
(obj: T) => obj.toString.length > 7
}
но потом мне нужно вызвать метод для каждого типа T и получить новую функцию. Я просмотрел ссылку на язык, и, хотя я вижу, что синтаксис функции литерала переводится компилятором в экземпляр объекта Functionn, который сам имеет общие типы ввода, похоже, что магия компилятора реализует эти параметры во время создания. Я не нашел синтаксиса, который позволяет мне, по сути, "оставить один или несколько параметров типа Functionn unbound". Я бы предпочел что-то вроде:
// doesn't compile
val longStringFunction: [T](T) => Boolean = (obj: T) => obj.toString.length > 7
Есть ли такая вещь? Или в этом отношении, что является явным типом функции eta-расширения, когда расширяемый метод имеет общие параметры?
Это чисто надуманный и бесполезный пример. Конечно, я мог бы просто использовать функцию Any здесь.