scala – 对case类字段的简单迭代

我正在尝试编写一个泛型方法来迭代案例类的字段:

案例类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)

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...