首页 > 解决方案 > 根据条件使用可选元素初始化数组

问题描述

当你想用 ruby​​/rails 中的可选元素初始化一个数组时,常用的方法是什么?

现在我做

array = []
array << "1st element"
array << "2nd element" if flag?
array << "3rd element"

但感觉非常冗长,我猜它可能比完全初始化时慢

我想知道是否有类似的东西,

array = [
  "1st element",
  "2nd element" if flag?,
  "3rd element",
]
#=> ["1st element", "3rd element"]

标签: arraysruby-on-railsruby

解决方案


我不确定这是否是一种好方法,但这是我的建议:

array = [
  "1st element",
  flag? ? "2nd element" : nil,
  "3rd element"
].compact

.compactnil将从您的数组中删除所有值。如果您可能有 nil 值,这将是有问题的。


推荐阅读