我想知道是否可以通过数组的自动创建来推送数组(如果还不存在),例如在PHP中:
$toto[] = 'titi';
Run Code Online (Sandbox Code Playgroud)
如果$ toto尚未定义,它将创建数组并将'titi'推入。如果已经存在,它将进行推送。
在Ruby中,我必须做:
toto ||= []
toto.push('titi')
Run Code Online (Sandbox Code Playgroud)
可以一行完成此操作吗?
因为如果我有一个循环,它将在第一次时测试“ || =”:
Person.all.each do |person|
toto ||= [] #with 1 billion of person, this line is useless 999 999 999 times...
toto.push(person.name)
Run Code Online (Sandbox Code Playgroud)
你有更好的解决方案吗?
谢谢。
toto = Person.all.reduce([]) do |arr, person|
arr << person.name
end
Run Code Online (Sandbox Code Playgroud)
或者如果它们来自数据库,您可以简单地提取名称
toto = Person.pluck(:name) # SELECT `people.name` FROM `people`
Run Code Online (Sandbox Code Playgroud)