Prefer an object over a hash, whenever the keys are significant

In general, any time you're working with a hash that has specific keys
(e.g. accessed with a literal), you've likely got an object wanting to
get out, even if it's just a struct with no other methods. The biggest
upside is more meaningful errors if you have a typo, since the default
behavior of a hash is to return nil. Cases where you don't care about
specific keys (e.g. using a hash to memoize a single argument method)
are fine.
Right, I was stealing words from the c2 wiki, but I realize that's kind of vague. What I meant was... there are some cases in which using arrays/hashes, in my opinion, is okay. Having a constant that maps a bunch of field names to their labels, for instance, or temporarily grouping a collection of data by some key so you can transform the data in some way. Maybe in those cases you could use an object, but they don't really represent a concept. Maybe these are rare cases. But I feel like if we say "Prefer value objects over primitives" that isn't really specific enough. I don't know. What do you think?