是否有允许函数文字上的泛型类型参数的语法?我知道我可以将其包装在以下方法中:
def createLongStringFunction[T](): (T) => Boolean = {
(obj: T) => obj.toString.length > 7
}
但后来我最终需要为每种类型 T 调用该方法并获得一个新函数。我查看了语言参考,虽然我看到编译器将函数文字语法转换为本身具有通用输入类型的Functionn对象的实例,但看起来编译器魔法在创建时实现了这些参数。实际上,我没有找到任何允许我“使Functionn的一个或多个类型参数未绑定”的语法。我更喜欢的是:
// doesn't compile
val longStringFunction: [T](T) => Boolean = (obj: T) => obj.toString.length > 7
有没有这样的事情存在?或者就此而言,当被扩展的方法具有泛型参数时,eta-expansion 函数的显式类型是什么?
这是一个纯粹人为且无用的示例。当然,我可以让函数在这里使用 Any 。