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

Ruby中如何优雅实现适配两种输入格式的数组解构赋值

实现方案

方案1:Ruby 2.7+ 模式匹配写法(最优雅)

直接用Ruby内置的模式匹配语法一行实现,可读性极高:

main, alternative = data in [Array, Array] ? data : [data, nil]

运行验证:

  • 输入data = [1,2,3]:模式匹配不命中,返回[[1,2,3], nil],解构得到main = [1,2,3]、alternative = nil,符合预期
  • 输入data = [[1,2,3],['a','b','c']]:模式匹配命中,直接解构原数组,结果和原有逻辑完全一致

方案2:低版本Ruby兼容写法

如果需要兼容Ruby 2.7之前的版本,可以通过判断首元素类型实现,同样只有一行:

main, alternative = data[0].is_a?(Array) ? data : [data, nil]

因为你明确限定了data只会是两种格式之一,只要首元素是数组就对应第二种二维数组格式,否则对应第一种一维数组格式,逻辑完全可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:57:03