我有一條記錄,我想插入它和數組,然後訪問它。插入到一個數組軌道3
users = User.all
results = []
users.each do |user|
results << {:name => user.name, :email => user.email}
end
是結果變量還是數組?如果是的話,我怎樣才能把所有的名字與電子郵件一起?
我有一條記錄,我想插入它和數組,然後訪問它。插入到一個數組軌道3
users = User.all
results = []
users.each do |user|
results << {:name => user.name, :email => user.email}
end
是結果變量還是數組?如果是的話,我怎樣才能把所有的名字與電子郵件一起?
你的榜樣將創建充滿包含每個用戶的姓名和電子郵件哈希值的數組results
。
你可以訪問它在幾個方面,其中最簡單的是一個簡單的循環:
results.each do |result|
name = result[:name]
email = result[:email]
end
您也可以訪問不同的物品,直接像這樣:
first_result_name = results[0][:name]
,但要小心的嘗試訪問可能不存在的結果。
但我要問,你爲什麼要這麼做?將所有User
的名稱和電子郵件分配給一個數組沒有任何好處,User.all在功能上並沒有什麼不同。
results = User.all.inject([]) do |array, user|
array << {:name => user.name, :email => user.email}
end
鑑於「成果」現在包含這個集合:
是的,它仍然是一個數組。你可以有你以後想要什麼,例如有:
results.each do |result|
result[:name] # access to name
result[:email] # access to email
end
你只需要一條線做
results = users.collect{|user| {:name => user.name, :email => user.email}}
謝謝,會用它 –
在一種不相關的方式,爲您最初的代碼可以改寫哈希值,如果你想打印每一個用戶名和電子郵件,你會怎麼做:
results.each do |user|
puts "#{user[:name]} #{user[:email]}"
end
我如何可以訪問所有的結果,我只是想做結果 –
那麼你想要什麼樣的形式? –
解釋你想對結果做什麼,我們可以給出更有針對性的答案。 – Matt