我正在尝试编写一个泛型方法来迭代案例类的字段:
案例类PriceMove(价格:双倍,增量:双倍)
def log(pm:PriceMove){info(“price – >”price“delta – >”delta)}
我需要使log能够处理任何案例类.
什么只需要log的参数类型来处理case类和实际的泛型字段迭代代码?
解决方法
好的,考虑到我对问题的两个问题,这就是我使用的:
object Implicits { implicit class CaseClasstoString(c: AnyRef) { def toStringWithFields: String = { val fields = (Map[String,Any]() /: c.getClass.getDeclaredFields) { (a,f) => f.setAccessible(true) a + (f.getName -> f.get(c)) } s"${c.getClass.getName}(${fields.mkString(",")})" } } } case class PriceMove(price: Double,delta: Double) object Test extends App { import Implicits._ println(PriceMove(1.23,2.56).toStringWithFields) }
这会产生:
PriceMove(price -> 1.23,delta -> 2.56)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。