私はルビーを学んでいて、初心者の挑戦のために書いたコードについていくつか質問があります。課題の目的は、xml ドキュメントから人口が最も多い国を見つけることです。
以下に私のコードを含めました。私が持っている質問は次のとおりです。
@max_pop
変数 ( )を初期化する必要を回避する方法はあり@max_pop=0
ますか?- 条件付きブロック全体を 1 行にまとめる省略形はありますか?
- インスタンス vars を使用する必要があります
@max_pop
か@max_pop_country
? それらなしでエラーが発生しました。 - どちらがより効率的ですか:
- 各国をループして確認する
pop > max_pop
(以下のコードでのアプローチ) - ポップ ハッシュ (
pop[:country]
) を作成し、ポップが最も高い国を見つけます
- 各国をループして確認する
- ハッシュ内の最大要素のキーと値のペアを返すハッシュ メソッドはありますか (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}