このチュートリアルの演習の 1 つは次のとおりです。
map
が常に配列を返すという事実を利用しhash_keys
ます。ハッシュを受け取り、それをマップしてすべてのキーを linear で返すメソッドを作成しますArray
。
解決策は次のとおりです。
def hash_keys(hash)
hash.map { |pair| pair.first }
end
ただし、上記が機能する理由を理解するのに苦労しています。たとえば、次のようなソリューションも作成しました。
def hash_keys(hash)
# Initialize a new array
result = Array.new
# Cycle through each element of the hash and push each key on to our array
hash.map { |x,y| result.push(x) }
# Return the array
result
end
私の方法が機能する理由は理解できますが、提案された解決策は理解できません。たとえば、Array オブジェクトを作成していません。彼らは何も返していません。各キー/値要素配列の最初の要素をリストしているようです。