【发布时间】:2014-04-25 03:30:07
【问题描述】:
我有两个具有相似方法的对象〜(...)。我还定义了应将对 (String, A) 转换为 DemoObject 或 WopWopWop 的隐式转换
class DemoObject[A](t: (String, A)) {
def ~(t: (String, A)) = "demo"
}
class WopWopWop[A](t: (String, A)) {
def ~(t: AnyVal) = "wop wop wop"
}
object ImplicitDemoConversions {
implicit def pair2DemoObject[A](t: (String, A)) = new DemoObject(t)
}
object ImplicitWopWopWopConversions {
implicit def pair2WopWopWop[A](t: (String, A)) = new WopWopWop(t)
}
但是,有类似的东西
import ImplicitDemoConversions._
object Hello {
def main(args: Array[String]): Unit = {
import ImplicitWopWopWopConversions._
val pair = ("LolTest" -> "A") ~ ("whoa" -> "wop wop wop")
println(pair)
}
}
将打印答案demo,而不是预期的wop wop wop。看起来 scala 编译器忽略了 ImplicitWopWopWopConversions 的第二次导入。_
问题是为什么我认为应该将 (String, String) 对转换为 WopWopWop 以及如何获取 WopWopWop 对象而不是 DemoObject?
你可以在这里找到真实的例子https://github.com/json4s/json4s/issues/121
【问题讨论】:
标签: scala