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

Ruby if条件代码简化:如何避免重复PaymentAccount.new并解决三元表达式报错

Ruby初始化方法逻辑简化方案

报错原因说明

之前三元表达式写法报错,通常是因为换行时没有将?、:放在上一行末尾,Ruby解析器会将前半部分判定为独立语句,触发语法错误。

方案1:直接改写为正确的三元表达式

def initialize(document_data)
  document_data.payment_accounts = document_data.compensation_currency == 'EUR' ?
    [PaymentAccount.new(currency: 'EUR', bank_name: 'bank name', iban: 'EU000000000000001', swift: 'EURBANK')] :
    [PaymentAccount.new(bank_name: 'bank name 2', iban: 'NT00000000000000', swift: 'NTBANK')]
  super(document_data)
end

方案2:提取配置参数,彻底避免重复实例化代码(更易维护)

不需要重复写PaymentAccount.new和外层数组,后续修改账户配置只需要调整参数部分即可:

def initialize(document_data)
  # 三元表达式仅处理差异化参数
  account_params = document_data.compensation_currency == 'EUR' ?
    { currency: 'EUR', bank_name: 'bank name', iban: 'EU000000000000001', swift: 'EURBANK' } :
    { bank_name: 'bank name 2', iban: 'NT00000000000000', swift: 'NTBANK' }
  # 统一执行实例化逻辑
  document_data.payment_accounts = [PaymentAccount.new(account_params)]
  super(document_data)
end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:45:11