什么Ruby相当于Python的setDefault()?

时间:2015-10-29 07:12:14

标签: python ruby-on-rails ruby

我理解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时使用它,但需要完全掌握这个概念。我想这个例子会让我清楚。

2 个答案:

答案 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