ひがきの日記

2008-05-11

ほんとだ、Struct って便利

そこでStructですよ - ’(rubikitch wanna be (a . lisper))

最初は某有名ブロガーのエントリで見たんだけど、

data = [
  {'name'=>'Foo', 'age'=>20, 'email'=>'foo@mail.com'},
  {'name'=>'Bar', 'age'=>21, 'email'=>'bar@mail.net'},
  {'name'=>'Baz', 'age'=>22, 'email'=>'baz@mail.org'},
]

これが、Struct を使うと、

Person = Struct.new(:name, :age, :email)
data = DATA.readlines.map{|buf| Person.new(*buf.strip.split(/\s*,\s*/))}

__END__
Foo, 20, foo@mail.com
Bar, 21, bar@mail.net
Baz, 22, baz@mail.org

データがスッキリ分離できる。

それよりも Struct にアクセスするときに、

  • s["name"]
  • s[:name]
  • s[0]
  • s.name

が同じってのが凄い。

JavaScript みたいだ。