You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Scala样例类属性与变量序列映射生成指定格式字符串?

Scala 实现样例类属性映射为指定格式字符串

首先修正你的样例类语法错误:Scala 里样例类的参数要放在括号中,且基础类型首字母大写(比如Int而非int),正确定义如下:

case class VariablesToMap(
  id: Int,    // 示例值: 100
  name: String,  // 示例值: Jon
  country: String, // 示例值: USA
  pincode: String, // 示例值: 121212
  state: String, // 示例值: Texas
  ssn: String // 示例值: ABCGS125AJH
)

以下是三种可行的实现方案:

方案一:手动匹配(类型安全,适合简单场景)

如果属性数量不多,直接通过模式匹配获取对应值,避免反射开销:

val instance = VariablesToMap(100, "Jon", "USA", "121212", "Texas", "ABCGS125AJH")
val myColumns = Seq("id", "name", "country")

val op = myColumns.map {
  case "id" => s"/id=${instance.id}"
  case "name" => s"/name=${instance.name}"
  case "country" => s"/country=${instance.country}"
  // 可按需添加其他属性的匹配分支
}.mkString + "/"
// 最终结果:/id=100/name=Jon/country=USA/

方案二:反射实现(灵活适配动态列)

通过 Scala 反射 API 动态获取属性值,适合列名动态变化的场景:

import scala.reflect.runtime.universe._

val instance = VariablesToMap(100, "Jon", "USA", "121212", "Texas", "ABCGS125AJH")
val myColumns = Seq("id", "name", "country")

val mirror = runtimeMirror(instance.getClass.getClassLoader)
val instanceMirror = mirror.reflect(instance)

val op = myColumns.map { column =>
  val fieldSymbol = typeOf[VariablesToMap].decl(TermName(column)).asTerm
  val fieldMirror = instanceMirror.reflectField(fieldSymbol)
  s"/$column=${fieldMirror.get}"
}.mkString + "/"
// 最终结果:/id=100/name=Jon/country=USA/

方案三:利用样例类的 Product 特性(简洁高效)

Scala 样例类默认实现Product特质,可快速构建属性名与值的映射:

import scala.reflect.runtime.universe._

val instance = VariablesToMap(100, "Jon", "USA", "121212", "Texas", "ABCGS125AJH")
val myColumns = Seq("id", "name", "country")

// 获取样例类的所有属性名
val fieldNames = typeOf[VariablesToMap].members.sorted.collect {
  case m: MethodSymbol if m.isCaseAccessor => m.name.toString
}
// 构建属性名到值的映射表
val fieldMap = fieldNames.zip(instance.productIterator.toSeq).toMap

val op = myColumns.map(column => s"/$column=${fieldMap(column)}").mkString + "/"
// 最终结果:/id=100/name=Jon/country=USA/

内容的提问来源于stack exchange,提问作者morgan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 15:10:16