NamedStruct — Improving Ruby’s Struct
This post describes what I think is a major flaw in Ruby’s built-in Struct class, and proposes a workaround. This blog post does a good job of explaining the benefits of using Struct for value objects. Here’s my gripe with Struct: Although fields in a Struct are named (unlike an array, or Python’s tuple), named/keyword arguments aren’t allowed when instantiating a Struct object. This defeats the purpose of having named fields in the first place! The benefit of having named fields is that they attach meaning to your data. Birthday.new(day: 5, month: 7) is undoubtedly more clear than Birthday.new(5, 7).