我有一个问题,我正在为我的应用程序使用哈希,这个哈希收集并且应该总结一些数据。
def os_versions
@hash_os_versions = Hash.new{ |h,k| h[k] = Hash.new(&h.default_proc) }
for user in @users do
for os_version in user.profile.os_versions do
unless @hash_os_versions.key?(os_version.operating_system_id.to_s)
@hash_os_versions[os_version.operating_system_id.to_s][os_version.name] = 0
end
@hash_os_versions.values.inject(0){|h,k| k[os_version.name] = 1}
end
end
@hash_os_versions
end
此哈希结果:
{“1”=> {“Fedora”=> 1,“OS X 10.4 Tiger”=> 1,“OS X 10.6 Snow Leopard”=> 1,“Windows 2000”=> 1 ,“Debian”=> 1,“OpenSUSE”=> 1,“OS X 10.5 Leopard”=> 1,“OS X 10.7 Lion”=> 1,“Red Hat”=> 1,“Ubuntu “=> 1,”Windows 7“=> 1,”Windows 98“=> 1,”Windows Vista“=> 1,”Windows XP“=> 1},”2“=> { “OS X 10.4 Tiger”=> 1,“OS X 10.6 Snow Leopard”=> 1,“Windows 2000”=> 1,“Debian”=> 1,“Fedora”=> 1,“OpenSUSE “=> 1,”OS X 10.5 Leopard“=> 1,”OS X 10.7 Lion“=> 1,”Red Hat“=> 1,”Ubuntu“=> 1,”Windows 7“= > 1,“Windows 98”=> 1,“Windows Vista”=> 1,“Windows XP”=> 1},...}
基本上: id_operation_system => os_version_name =>计数
但是,我无法总结价值观,我试过了:
@hash_os_versions.values.inject(0){|h,k| k[os_version.name] += 1}
但是返回错误:
undefined method `+' for {}:Hash
我知道我需要使用注入,但它不起作用。
Ps:拜托,对不起我的英文