我需要帮助。我正在用Ruby进行基本练习,但是现在我不太了解defult。我需要编写一个称为temp的函数,该函数可以接收一个参数(哈希)。该函数必须返回相同的哈希值,但要进行以下更改:
您的问题有点令人困惑。
If the hash doesn't have the key :puppy return 4 as value.
If the hash doesn't have the key :cat return 6 as value.
[我认为您需要一个函数,该函数返回传入哈希的版本,该版本分别将键:puppy
和:cat
分别默认为4和6,并假设它们尚未位于传入哈希中。这应该工作:
def temp(source)
return Hash.new do |h, k|
h.fetch(k, case k when :puppy then 4; when :cat then 6; end)
end.merge(source)
end
def temp(h)
return 4 if h[:puppet].nil?
return 6 if h[:cat].nil?
h
end
假设此问题与默认值有关,那么您需要使用default
或default_proc
。您可以创建一个新的哈希,并通过Hash.new
为其提供默认处理。
def temp(h)
Hash.new do |hash, key|
if key == :puppy
h.fetch(:puppy, 4)
elsif key == :cat
h.fetch(:cat, 6)
else
h[key]
end
end
end