2

このチュートリアルの演習の 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 オブジェクトを作成していません。彼らは何も返していません。各キー/値要素配列の最初の要素をリストしているようです。

4

4 に答える 4