プロジェクトで単純なハッシュではなく構造体を使用して、キーと値のペアのコレクションにセマンティック名を提供しています。ただし、構造を構築したら、ハッシュ値を出力する必要があります。私はRuby 1.9.3です。例:
MyMeaninfulName = Struct.new(:alpha, :beta, :gamma) do
def to_hash
self.members.inject({}) {|h,m| h[m] = self[m]; h}
end
end
my_var = MyMeaningfulName.new
my_var.to_hash # -> { :alpha=>nil, :beta=>nil, :gamma=>nil }
Struct に to_hash メソッドが含まれていない理由はありますか? 当然のように思えますが、含まれていないのには何か根本的な理由があるのかもしれません。
第二に、一般的な to_hash メソッドを Struct に構築するよりエレガントな方法はありますか (一般的には、モンキーパッチを介して、またはモジュールまたは継承を介して)。