class Dry::Core::Equalizer

def define_hash_method(immutable:)

Other tags:
    Api: - private

Returns:
  • (undefined) -
def define_hash_method(immutable:)
  calculate_hash = ->(obj) { @keys.map { |key| obj.__send__(key) }.push(obj.class).hash }
  if immutable
    define_method(:hash) do
      @__hash__ ||= calculate_hash.call(self)
    end
    define_method(:freeze) do
      hash
      super()
    end
  else
    define_method(:hash) do
      calculate_hash.call(self)
    end
  end
end