【发布时间】:2011-10-26 00:20:28
【问题描述】:
我有一个键和值都是泛型类型的映射。像这样的:
Map[Foo[A], Bar[A]]
我想表达的是,对于映射中的每个键值对,A 的类型可能不同,但每个键始终使用与其映射到的值相同的类型进行参数化。所以Foo[Int] 总是映射到Bar[Int],Foo[String] 总是映射到Bar[String],等等。
有人知道如何表达吗?
编辑:
这是我正在尝试做的事情的一个例子:
trait Parameter // not important what it actually does
class Example {
val handlers: Map[_ <: Parameter, (_ <: Parameter) => _] = Map()
def doSomething() {
for ((value, handler) <- handlers) {
handler(value)
}
}
}
这个想法是,一个值总是会映射到一个可以接受它作为参数的函数,但是由于现在编写代码,编译器无法知道这一点。
【问题讨论】:
-
该行无法自行编译,scala 需要从某个地方选择这些类型(类或方法类型注释,或抽象类型),您能给我们看一下代码吗?