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

Scala 2.13:如何避免重复创建样例类?

优化Scala密封特质模式匹配:直接复用匹配实例

当然可以优化,你完全没必要解构样例类参数再重新创建相同实例——直接绑定匹配到的整个实例就行,既减少冗余代码,又避免不必要的对象创建。

优化后的代码(分情况匹配)

expressions.head match {
  case expr: SingleValueExpression => filter ++ FromScala(expr).transform(ToJson.string)
  case expr: MultipleValueExpression => filter ++ FromScala(expr).transform(ToJson.string)
}

进一步精简(合并相同逻辑的case)

因为两个分支的处理逻辑完全一致,还可以用@模式绑定把两个case合并:

expressions.head match {
  case expr @ (_: SingleValueExpression | _: MultipleValueExpression) => 
    filter ++ FromScala(expr).transform(ToJson.string)
}

为什么这样可行?

  1. 密封特质的所有子类都是已知的,编译器会帮你检查是否覆盖了所有可能的匹配分支,不用担心遗漏情况。
  2. 直接绑定实例到expr变量,直接复用原对象,省去了解构再重建的无意义操作,代码更简洁高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 10:01:16