假设您想使用Map
,并且您有以下要求:您希望每个键映射到相同类型的值。从T到T的映射
Map<???> map = ...;
map.put(42, 15);
map.put("hello world", 15); // compile time error, because you cannot map from string to int.
map.put("hello world", "foobar");
map.put(new Foo(), new Foo());
Integer i = map.get(42);
String s = map.get("hello world");
Foo f = map.get(new Foo());
当然上面的代码将无法编译但诀窍是,你从映射到T
其中T
是T
没有实例化定义。地图只是返回与参数相同的类型。当然,它可以变得更有趣,如从T
到List<T>
的映射。这没有丑陋的铸造?
斯卡拉的类型系统通常被认为是更先进的,是否有在斯卡拉解决方案?
如果上述两个问题的答案都是否定的,是否有任何语言支持这种类型?
注意: 上述代码中的映射只是一个带有两个通用参数的类型的示例。我对地图不是特别感兴趣,但更多的是在类型系统中。
我添加了拨打电话,我希望现在更清楚。 –
所以......你想要一个'Map'数据结构,它包含*你喜欢的任何*作为键和值? – Makoto
[无形](https://github.com/milessabin/shapeless)是一个Scala库,它提供了一种类似于这种(称为“'HMap'”)的类型(https:// github。 COM/milessabin /不成形/维基/功能 - 概述:-shapeless-2.0.0#异质-地图)。 –