【发布时间】:2013-03-07 06:47:39
【问题描述】:
是否有允许函数字面量上的泛型类型参数的语法?我知道我可以把它包装成这样的方法:
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。
【问题讨论】: