1

私はフラットなハッシュを持っています:

hash = Hash["prop_one" => 100, "prop_two" => 200, "prop_three" => 300]  

私はそれをクラスにラップし、クラスはこれらの値を公開してアクセサーを介して読み取るようにしました。

class WrappedHash

  def prop_one
    config['prop_one']
  end

  def prop_two
    config['prop_two']
  end  

  def prop_three
    config['prop_three']
  end

  def initialize(config)
    self.config = config
  end

end

手動でアクセサーを追加せずに、これらのプロパティのリクエストをハッシュにプロキシする方法はありますか? (それは大きなハッシュです)

4

2 に答える 2

3

動的ハッシュ キーがある場合はOpenStructを使用し、キーが静的でパフォーマンスが重要な場合はStructを使用します。

OpenStruct は、そのmarshal_dumpメソッドによって Hash に戻すことができます

于 2013-01-17T10:47:23.153 に答える
3

method_missing メソッドを実装することもできます。obj が処理できないメッセージが送信されたときに、Ruby によって呼び出されます。

class WrappedHash
  def method_missing(methId)
    config[methId.to_s]
  end
end
于 2013-01-17T10:51:51.533 に答える