0

惯用的 Scala 代码尽可能地是类型安全的。结果,反射是不受欢迎的,如果你最终使用Any静态类型,你就会遇到问题。

例如,流行的 Circe 库可以在没有任何样板的情况下将 aMap[String, String]或 aMap[String, Int]转换为 JSON

Map("a" -> "b").asJson
Map("one" -> 1).asJson

但是如果你尝试将两者结合起来,你最终会得到 aMap[String, Any]并且它不能与它一起工作。

Map("a" -> "b", "one" -> 1).asJson // BOOM (compile-time boom, of course, we are not animals)

在 Scala 3 中,大概类型是Map[String, String | Int]?

如果是这样,现在是否有可能实现诸如asJson(可能需要使用宏)之类的方法来确定联合中的每种可能类型都是“可接受的”?

(Circe 的例子只是一个例子,在现实生活中你首先没有这个 Map,而是一个适当的案例类,关于这方面的讨论,请参阅引发这个问题的线程)

4

0 回答 0