在json4s,代码可以被写成这样:即使未导入jvalue2monadic,为什么可以将JValue隐式转换为MonadicJValue?
import org.json4s._
import org.json4s.jackson.JsonMethods._
...
val x: MonadicJValue = JObject()
因为函数
implicit def jvalue2monadic(jv: JValue) = new MonadicJValue(jv)
由第一import org.json4s._
线导入到范围这是正确的。
(source of jvalue2monadic defination on github)
不过,我想代码的另一段和它的作品也很好:
import org.json4s.{JObject, MonadicJValue}
import org.json4s.jackson.JsonMethods.parse
...
val x: MonadicJValue = JObject()
由于隐函数不导入到这个范围,我不知道它是如何工作!
我相信这是因为JObject和隐式定义在同一个对象中,但我不确定 – Daenyth
@Daenyth我自己尝试了一个小演示,定义了我的类和隐式函数,就像json4s做的一样,但它转向我的隐含根本不起作用。所以我不认为这是因为它们被定义在同一个对象中。 –