假設您想使用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#異質-地圖)。 –