ruby - 在 ruby​​ 中使用自动创建插入数组

标签 ruby arrays push

我想知道是否可以通过自动创建数组来插入数组,如果数组不存在的话,就像在 PHP 中一样:

$toto[] = 'titi';

如果尚未定义 $toto,它将创建数组并将“titi”压入。如果已经存在,它只会推送。

在 Ruby 中我必须这样做:

toto ||= []
toto.push('titi')

可以一行完成吗?

因为如果我有一个循环,它会测试“||=”,除了第一次:

Person.all.each do |person|    
   toto ||= [] #with 1 billion of person, this line is useless 999 999 999 times...
   toto.push(person.name)

你有更好的解决方案吗?

谢谢。

最佳答案

toto = Person.all.reduce([]) do |arr, person|
  arr << person.name
end

或者您可以简单地从数据库中提取名称

toto = Person.pluck(:name) # SELECT `people.name` FROM `people`

关于ruby - 在 ruby​​ 中使用自动创建插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20570540/

相关文章:

JAVA - 如何创建对象数组?

C++ 将 vector 推回 vector

java - 由于 : String cannot be converted to char,堆栈无法推送

ios - Apple Push Notification - 所有消息都已发送但并非所有消息都已送达

ruby - 使2个数组大小相同

ruby-on-rails - 获取错误缺少必需的 key : [:id] on a form_tag

ruby-on-rails - 将 span 放入 f.submit

html - 如何使用 Nokogiri 用 <p> 标签包装 HTML 无标签文本?

arrays - 数组中的最大差异未通过 HackerRank 中的所有测试用例

arrays - 给出一个复杂度为 O(N) 的算法来重新排列真/假列表,使所有假元素都在真元素之前