题
在Ruby中创建哈希哈希允许方便的两个(或更多)维度查找。但是,插入时必须始终检查散列中是否已存在第一个索引。例如:
h = Hash.new
h['x'] = Hash.new if not h.key?('x')
h['x']['y'] = value_to_insert
最好在自动创建新哈希的情况下执行以下操作:
h = Hash.new
h['x']['y'] = value_to_insert
类似地,当查找第一个索引尚不存在的值时,如果返回nil而不是接收“[]”错误的未定义方法,则更为可取。
looked_up_value = h['w']['z']
可以创建一个具有此行为的Hash包装类,但是是否存在用于完成此任务的Ruby习惯用法?
其他提示
自称为自我毁灭,既是一种祝福,也是一种诅咒。麻烦可能是,如果你“看”和在定义之前的某个值,你会在插槽中使用这个空哈希,你需要稍后将其删除。
如果你不介意一点无政府状态,你总是可以插入或等于样式声明,这样你就可以在查询它时构建预期的结构:
((h ||= { })['w'] ||= { })['z']
不隶属于 StackOverflow