고정개수의 필드를 갖는 구조체를 on-the-fly 생성해주는 라이브러리입니다.
(1) Struct의 정의
irb(main):001:0> Customer = Struct.new :name, :phone => Customer irb(main):002:0> c = Customer.new("Minkoo", "123-456") => #<struct Customer name="Minkoo", phone="123-456">
name과 phone 이라는 속성을 갖는 클래스를 정의했습니다. 다음, 인스턴스를 실제로 생성했습니다.
(2) 필드 접근
irb(main):003:0> c.name => "Minkoo" irb(main):004:0> c["name"] => "Minkoo"
(3) 필드명/값 보기
irb(main):007:0> c.each_pair { |name, val| puts "#{name} => #{val}" } name => Minkoo phone => 123-456 => #</struct><struct Customer name="Minkoo", phone="123-456">
(4) Struct는 hash와 == 를 자동으로 override한다.
irb(main):009:0> c2 = Customer.new("Minkoo", "123-456") => #</struct><struct Customer name="Minkoo", phone="123-456"> irb(main):011:0> c == c2 => true irb(main):012:0> c.hash == c2.hash => true
실제 Struct의 구현은 C로 되어있습니다.