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

Scala中为Case Class字段添加关联取值规则的高效实现

解决方案

要保证amount和currency同来源,核心是先统一判断是否采用metadata作为数据源,再同步两个字段的取值逻辑,避免混合来源。

代码实现

// 先判断是否满足统一使用metadata的条件:relevant为true,且metadata的amount和currency都已定义
val useMetaDataSource = relevant && metadata.amount.isDefined && metadata.currency.isDefined

val metaData = MetaData(
  id = metadata.id,
  amount = if (useMetaDataSource) metadata.amount else image.amount orElse metadata.amount,
  currency = if (useMetaDataSource) metadata.currency else image.currency orElse metadata.currency
)

逻辑说明

  • 当useMetaDataSource为true时,amount和currency都从metadata取值,严格保证来源一致;
  • 当useMetaDataSource为false时,两个字段统一走「优先从image取值,无值则回退到metadata」的逻辑,避免出现混合来源的情况;
  • 完全符合「若取metadata的amount则必须取metadata的currency,反之亦然」的规则要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:35:21