Ruby与Python的setDefault()等价于什么?

2024-05-14 09:14:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道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时使用它,但需要完全掌握这个概念。我想这个例子会让我明白的。你知道吗


Tags: 函数nameinforsizeobjectsnames例子
2条回答

鲁比拥有hash.fetch文件方法,您可以使用它以同样的方式优雅地处理缺少的键,不同的是它不会存储这些值:

h = {}
value = h.fetch(:some_key, [])  
# value is now []

我们在Ruby中完成工作的另一个常见方法是:

h[:some_key] ||= []

或者我猜你甚至可以这样做,如果你想把它赋给一个值:

value = h[:some_key] ||= []
h = Hash.new
h.default = "123"
puts h[any_key] //Prints 123

相关问题 更多 >

    热门问题