以别名的方式替换HASH的key
class Hash
# 以别名的方式替换hash的key
def alias_with(*aliases)
deep_dup.alias_with!(*aliases)
end
def alias_with!(*aliases)
tap { |hash|
Hash[*aliases].map { |old_name, new_name|
(old_name.is_a?(Symbol) ? new_name.to_sym : new_name.to_s).tap { |name|
hash.key?(old_name) && hash.update(name => hash.delete(old_name))
}
}
}
end
end