названия полей из класса (и case и обычного тоже)
                  
                  
                  
                  
                  
                  написал такое 
                  
                  
                  
                  
                  
                      case class Pers(name: String, age: Int)
                  
                  
                      class Car(name: String)
                  
                  
                  
                  
                  
                      val p = Pers("Ivan", 2)
                  
                  
                      val c = new Car("BMV")
                  
                  
                  
                  
                  
                      import scala.reflect.runtime.universe._
                  
                  
                      
                  
                  
                      def getListOfFields(p: Object): List[String] = {
                  
                  
                        val m = runtimeMirror(p.getClass.getClassLoader)
                  
                  
                  
                  
                  
                        val symbol = m.classSymbol(p.getClass).typeSignature.typeSymbol.asClass
                  
                  
                        val ctor = symbol.primaryConstructor
                  
                  
                  
                  
                  
                        val paramList = ctor.typeSignature.paramLists
                  
                  
                        paramList.flatten.map(s => s.name.toString)
                  
                  
                      }
                  
                  
                  
                  
                  
                      getListOfFields(p)
                  
                  
                      getListOfFields(c)
                  
                  
                  
                  
                  
                  //val res3: List[String] = List(name, age)
                  
                  
                  //val res4: List[String] = List(name)
                  
                  
                  
                  
                  
                  Это же можно как-то проще написать? А то как-то слишком cumbersome
                  
                  
                  Но зато так работает
                  
                  
                
Shapeless
А какая изначально задача решается?
https://www.scala-lang.org/api/current/scala/Product.html#productElementNames:Iterator[String]
Обсуждают сегодня