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

Scala中如何打印传入类函数的NetConfig样例类参数值?

正确打印NetConfig实例所有值的方法

你之前的操作错误在于混淆了类本身和类的实例对象:

  • NetConfig是类的名称,直接打印它只会输出类的标识字符串;
  • NetConfig.domain试图访问类的静态成员,但domain是NetConfig实例的成员,并非类的静态属性。

方法1:直接打印实例(利用样例类默认特性)

Scala的样例类会自动生成包含所有成员值的toString方法,你只需要打印传入的net实例即可:

final class CSRFRequestHandler(net: NetConfig) {
  // 直接打印net实例,会输出所有成员的键值对
  println(net)
}

输出格式类似:NetConfig(NetDomain(...), NetDomain(...), BaseUrl(...), ...),会完整展示每个字段的具体值。

方法2:用Play框架Json序列化(结构化美观输出)

如果使用Play框架,可以借助Play Json将实例序列化为JSON格式,输出更易读:

  1. 先为NetConfig及嵌套类(如NetDomain、RateLimit等)生成Json格式隐式转换(用Play的Json.format宏自动生成):
import play.api.libs.json._

object NetConfig {
  implicit val format: OFormat[NetConfig] = Json.format[NetConfig]
  // 需为所有嵌套类生成对应format
  implicit val netDomainFormat: OFormat[NetDomain] = Json.format[NetDomain]
  implicit val rateLimitFormat: OFormat[RateLimit] = Json.format[RateLimit]
  // 其他嵌套类同理补充
}
  1. 在处理器中序列化并打印:
final class CSRFRequestHandler(net: NetConfig) {
  println(Json.prettyPrint(Json.toJson(net)))
}

会输出格式化后的JSON字符串,每个字段的结构和值都清晰呈现。

方法3:手动打印指定字段

如果只需要打印部分字段或自定义输出格式,直接访问实例的成员即可:

final class CSRFRequestHandler(net: NetConfig) {
  println(s"Domain: ${net.domain}, BaseUrl: ${net.baseUrl}, IsProd: ${net.isProd}")
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:05:21