values = []
values << [ '1', 'one']
values << [ '2', 'two']
values << [ '3', 'three']
one = '1'
puts values[one]
以上一行引发了异常。
答案 0 :(得分:4)
你定义了一个数组,你想要一个哈希。
values = {}
values['1'] = 'one'
values['2'] = 'two'
values['3'] = 'three'
one = '1'
values[one] #=> 'one'
当然你应该写:
values = {
'1' => 'one',
'2' => 'two',
'3' => 'three',
}
one = '1'
values[one] #=> 'one'
答案 1 :(得分:3)
那不是哈希表;那是一个数组。 values
的值为[['1', 'one'], ['2', 'two'], ['3', 'three']]
您正在寻找的代码是:
values = {'1' => 'one', '2' => 'two'}
values['3'] = 'three'
one = '1'
puts values[one] # => 'one'
答案 2 :(得分:1)
values.select { |entry| entry[0].eql? '1' }[0][1]
答案 3 :(得分:1)
您可以将键值对数组转换为哈希值:
values = []
values << [ '1', 'one']
values << [ '2', 'two']
values << [ '3', 'three']
hash = Hash[values]
hash['1'] # => "one"
这使用了Hash.[]
方法,该方法描述为at this ruby-doc.org page。