使用String定义泛型类型

时间:2013-08-13 20:20:25

标签: scala

如何使用字符串定义泛型?例如,如果我想写

 def createMap(foo: String, bar: String) = {
   Map[foo, bar]()
 }

 val myMap = createMap("String", "Int")

我怎样才能将foo和bar转换为正确的类型?我在文档中没有看到太多关于此的内容。

1 个答案:

答案 0 :(得分:2)

  1. 查找

    def createMap[foo, bar] = {
      Map[foo, bar]()
    }
    
    val myMap = createMap[`String`, `Int`]
    

    它看起来与所需代码不相似吗?

  2. 如果您真的希望在运行时创建一个在编译时未知类型的地图,那么您只需使用Map[Any, Any]() +类型转换。我不认为用字符串类型标识符实现类型安全是不可能的。 (要获取运行时检查的类,请参阅another question

  3. 似乎可以使用macros。但是,我不是提供实施的专家。