我正在创建一个散列来表示 MySQL 数据库中的一些记录。散列键对应于数据库 ID 字段,散列值对应于数据库名称字段。
什么更好,为什么?
大批
这行得通,但是 Ruby 对于稀疏数组似乎效率低下,因为设置所有中间索引 tp 的值似乎有额外的开销
nil
。fruits = [] fruits[23] = "apple" fruits[109] = "orange" # ... fruits[23429] = "banana"
以 fixnum 为键的散列
我最喜欢这个,但我一直认为最好在哈希中使用符号作为键。使用 fixnums 作为哈希中的键是否同样好?我不确定它是否是,但我认为
34.hash
由于 fixnums 的性质,34.equal? 34
即为真而"hi".equal? "hi"
为假。fruits = { 23 => "apple", 109 => "orange", # ... 23429 => "banana" }
以固定数字的内部字符串表示作为键的散列
通过将 fixnums 转换为字符串然后是符号,我可以将符号用作键。然而,这种转换很烦人,有人曾经告诉我,字符串的实习效率很低。是这样吗?他们只是在我看来很难看。
fruits = { :"23" => "apple", :"109" => "orange", # ... :"23429" => "banana" }
以符号为键的散列
我可以通过在每个键前面加上一个字母字符来获得更漂亮的符号(并且还使用新的 Ruby 1.9 哈希语法),但是,这个解决方案还需要转换。
fruits = { i23: "apple", i109: "orange", # ... i23429: "banana" }