尝试从可能是Array
或Hash
的集合中获取值,但基于类型的切换似乎很尴尬:
def values_from_collection(array_or_hash)
case array_or_hash
when array_or_hash.is_a? Array
array_or_hash
when array_or_hash.is_a? Hash
array_or_hash.values
end
end
似乎应该有两个类都支持的单个接口/方法,但Enumerable
中没有明显的突出显示。有没有一种标准的方法来实现这一目标?
答案 0 :(得分:3)
嗯,对我来说似乎不是这样。散列和数组是非常不同的数据结构。为什么你认为他们应该支持这个?
无论如何,你可以,例如,猴子补丁Array类来添加values
方法
class Array
def values
self
end
end
然后你的方法大大简化了:
def values_from_collection(array_or_hash)
array_or_hash.values
end
但在我看来,这比分支更糟糕。