我理解Python有一个setDefault()
函数,允许您设置缺失值的值。但是,我很好奇这将如何移植到Ruby。
特别是这样的例子:
animals = Animal.objects
animal_names = {}
for animal in animals:
a = animal_names.setdefault(animal.name, [])
a.append({'color': animal.color, 'size': animal.size})
我想我可以在编程Ruby时使用它,但需要完全掌握这个概念。我想这个例子会让我清楚。
答案 0 :(得分:0)
Ruby有hash.fetch方法,您可以使用它以相同的方式优雅地处理丢失的密钥,区别在于它不会存储这些值:
h = {}
value = h.fetch(:some_key, [])
# value is now []
我们在Ruby中完成您所做的事情的另一种常见方式是:
h[:some_key] ||= []
或者我想如果你想将它分配给一个值,你甚至可以这样做:
value = h[:some_key] ||= []
答案 1 :(得分:0)
h = Hash.new
h.default = "123"
puts h[any_key] //Prints 123