在C ++中,我们可以从定义的地图中获取抽象键/值类型(key_type
,value_type
,http://en.cppreference.com/w/cpp/container/map)。当我需要稍后更改地图类型时,这非常方便,因为依赖类型会相应地更改。
在Scala我也在寻找这样的功能。例如,我定义了一个地图类型:
type MapTy : mutable.Map[Long, Int]
我希望返回地图的条目(其类型为Long->Int
)。返回类型取决于MapTy
,最好在函数签名中明确指定,写成MapTy::key_type->MapTy::value_type
之类的东西。因此,稍后我将MapTy
更改为
type MapTy : mutable.Map[Int, Int]
条目类型也会同时更改为Int->Int
。
Scala可以吗?
答案 0 :(得分:2)
在Scala中,泛型类型在擦除时丢失,因此在运行时不可能。有人可能会说明如何做到这一点,直到那时这是一个解决方法:
type Key = Int
type Value = Long
type Map = mutable.Map[Key, Value]
此外,this可能会有所帮助。