【发布时间】:2023-02-02 14:43:25
【问题描述】:
我正在尝试围绕 XML 解析器实现一些小的生活质量改进,基本上是试图模仿 Circe 在 Scala 中解析 Json 的方式。 然后的想法是按照这些思路提出一个类型类定义
type ParseResult[T] = ???
trait XMLCodec[T]:
extension(t: T)
def toXML: Elem
extension(xml: Elem)
def as[T]: ParseResult[T] // <- this fails to compile
除此之外,如标题所述,我得到一个Suspicious Shadowing by a Type Parameter。
我当然可以从该行中删除 [T]
trait XMLCodec[T]:
//...
extension(xml: Elem)
def asObject: ParseResult[T] // <- works fine
以上很好,但我担心在任何给定上下文中存在同一类型类的多个实现时名称冲突。 有没有一种简单的方法可以解决我所缺少的问题?
【问题讨论】:
-
<- this fails to compile无法重现。代码似乎可以编译 scastie.scala-lang.org/DmytroMitin/BmKCLGwcSQG3haB7nLD7iw/3 可能你错过了什么。
标签: scala functional-programming extension-methods typeclass scala-xml