方法1
在需要隐式转换的地方,把需要的参数显示的写出。
略
方法2,查看编译代码
在terminal中 利用 scalac -Xprint:typer xxx.scala
方法打印添加了隐式值的代码示例。
对于复杂的工程来说,直接跑到terminal执行 scalac -Xprint:typer xxx.scala
会报很多库不存在的错误。
BasicTest.scala:5: error: object scalatest is not a member of package org
import org.scalatest.funsuite
^
BasicTest.scala:6: error: object apache is not a member of package org
import org.apache.log4j.Logger
^
BasicTest.scala:7: error: object json4s is not a member of package org
import org.json4s._
^
BasicTest.scala:8: error: object json4s is not a member of package org
import org.json4s.JsonDSL._
可在idea的设置中,找到如下配置,写入-Xprint:typer
再到要调试的文件页面,进行编译(快捷键Ctrl+Shift+F9)。然后编译结果就会打印,比如我的如下代码:
test("json字段覆盖测试"){
var json = ("name" -> "joe") ~ ("age" -> 35)
LOGGER.info(compact(render(json)))
json ~ ("age" -> 38)
LOGGER.info(compact(render(json)))
var json2=parse("{\"name\":\"joe\",\"age\":35}")
json2 = json2 merge render("height",175)
}
编译输出:
BasicTest.this.test("json�ֶθ���")({
var json: org.json4s.JsonAST.JObject = org.json4s.JsonDSL.pair2Assoc[String](scala.Predef.ArrowAssoc[String]("name").->[String]("joe"))({
((x: String) => org.json4s.JsonDSL.string2jvalue(x))
}).~[Int](scala.Predef.ArrowAssoc[String]("age").->[Int](35))({
((x: String) => org.json4s.JsonDSL.string2jvalue(x))
}, {
((x: Int) => org.json4s.JsonDSL.int2jvalue(x))
});
BasicTest.this.LOGGER.info(org.json4s.jackson.JsonMethods.compact({
<artifact> val x$1: org.json4s.JsonAST.JObject = json;
<artifact> val x$2: org.json4s.Formats = org.json4s.jackson.JsonMethods.render$default$2(x$1);
org.json4s.jackson.JsonMethods.render(x$1)(x$2)
}));
org.json4s.JsonDSL.jobject2assoc(json).~(org.json4s.JsonDSL.pair2jvalue[Int](scala.Predef.ArrowAssoc[String]("age").->[Int](38))({
((x: Int) => org.json4s.JsonDSL.int2jvalue(x))
}));
BasicTest.this.LOGGER.info(org.json4s.jackson.JsonMethods.compact({
<artifact> val x$3: org.json4s.JsonAST.JObject = json;
<artifact> val x$4: org.json4s.Formats = org.json4s.jackson.JsonMethods.render$default$2(x$3);
org.json4s.jackson.JsonMethods.render(x$3)(x$4)
}));
var json2: org.json4s.JValue = org.json4s.jackson.JsonMethods.parse(org.json4s.`package`.string2JsonInput("{\"name\":\"joe\",\"age\":35}"), org.json4s.jackson.JsonMethods.parse$default$2, org.json4s.jackson.JsonMethods.parse$default$3);
json2 = JsonAST.this.JValue.j2m[org.json4s.JValue](json2).merge[org.json4s.JValue, org.json4s.JsonAST.JValue]({
<artifact> val x$5: org.json4s.JsonAST.JObject = org.json4s.JsonDSL.pair2jvalue[Int](scala.Tuple2.apply[String, Int]("height", 175))({
((x: Int) => org.json4s.JsonDSL.int2jvalue(x))
});
<artifact> val x$6: org.json4s.Formats = org.json4s.jackson.JsonMethods.render$default$2(x$5);
org.json4s.jackson.JsonMethods.render(x$5)(x$6)
})(JsonAST.this.JValue.jjj[org.json4s.JValue, org.json4s.JValue])
})((Position.apply("BasicTest.scala", "Please set the environment variable SCALACTIC_FILL_FILE_PATHNAMES to yes at compile time to enable this feature.", 27): org.scalactic.source.Position))
}