해시 및 구조체의 사용 사례가 매우 유사하다고 생각하지 않습니다. 해시를 사용하면 다양한 수의 키 - 값 쌍을 저장할 수 있으며 원하는 경우 수천 개의 쌍을 저장하는 데 적합합니다. 특별한 키는 존재하지 않습니다. 구조체를 사용하면 항상 "키"집합이 무엇인지 알 수 있으며 대개 작습니다 (20 미만).
해시는 정보의 일부를 많은 수의 다른 개체와 연관시키는 데 사용할 수 있습니다. 해시는 함수에 선택적 매개 변수를 지정하는 데 사용됩니다. 구조체는 잘 정의 된 정보를 하나의 객체에 보관하려는 경우에 사용할 수 있습니다.
구조체를 해시로 변환하지 않으려 고 한 이유가 궁금합니다.
수정 1 : 구조체와 함께 해쉬하지 않는 구문을 사용할 수 있다는 것을 알고 계셨습니까?
P = Struct.new(:x,:y)
p = P.new(1,2)
p.x # => x
편집 2 : 해시가 빠르게 개체를 검색 할 수 있습니다. obj_hashed_by_name[name]
은 obj_array.find { |a| a.name == name }
보다 훨씬 빠릅니다.
이 'injectless'솔루션에 대해 고맙습니다. 그리고 더 중요한 것은 informatian에 대해 OpenStruct에는 그런 방법이 있습니다. 이것은 Ruby Struct (궁극적으로는 그것입니다)에 대해 물어볼 수있는 가능한 일입니다. – cvshepherd
Ruby 2.0에는 Struct에 to_h 메소드가 있습니다. –