我正在学习 ruby,并且对我为新手挑战编写的一些代码有一些疑问。挑战的目的是从 xml 文档中找到人口最多的国家。
我在下面包含了我的代码。我的问题是:
- 有没有办法避免初始化
@max_pop
变量(@max_pop=0
)? - 是否有将整个条件块组合成 1 行的简写?
- 我必须使用实例变量
@max_pop
吗@max_pop_country
?没有他们就会出错。 - 哪个更有效:
- 遍历每个国家并检查是否
pop > max_pop
(以下代码中的方法) - 创建pop hash (
pop[:country]
),然后找到pop 最高的国家
- 遍历每个国家并检查是否
- 是否有散列方法返回散列中最大元素的键值对(做 4.1)?
源代码:
@max_pop=0
doc.elements.each("cia/country") do |country|
if country.attributes["population"].to_i > @max_pop
@max_pop=country.attributes["population"].to_i
@max_pop_country=country.attributes["name"]
end
end
puts "country with largest pop is #{@max_pop_country} with pop of #{@max_pop}