scala – 对case类字段的简单迭代
发布时间:2020-12-16 19:08:34 所属栏目:安全 来源:网络整理
导读:我正在尝试编写一个泛型方法来迭代案例类的字段: 案例类PriceMove(价格:双倍,增量:双倍) def log(pm:PriceMove){info(“price – ”price“delta – ”delta)} 我需要使log能够处理任何案例类. 什么只需要log的参数类型来处理case类和实际的泛型字段迭代
我正在尝试编写一个泛型方法来迭代案例类的字段:
案例类PriceMove(价格:双倍,增量:双倍) def log(pm:PriceMove){info(“price – >”price“delta – >”delta)} 我需要使log能够处理任何案例类. 解决方法
好的,考虑到我对问题的两个问题,这就是我使用的:
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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |