Я использую Ruby, и есть хэш, назовем его foo
, и его значение является массив с фиксированной длиной 2.Как обновить массив хэш-значения?
Как я могу обновить один из индексов в пределах массива хэш-значения? Вот пример:
foo.each do |k, v|
if k == 'some value'
foo[k] = update v[0]
foo[k] = update v[1]
end
end
Дальнейшее уточнение:
Я перекручивание через файл и внутри я хочу, чтобы увидеть, если текущая строка соответствует хэш ключа k
. Если это так, я хочу обновить временную метку в массиве значений, который хранится в v[1]
.
# read lines from the input file
File.open(@regfile, 'r') do |file|
file.each_line do |line|
# cache control
cached = false
# loop through @cache
@cache.each do |k, v|
# if (url is cached)
if line == k
# update the timestamp
@cache[k] = Time.now.getutc # need this to be put in v[1]
# set cached to true
cached = true
end
end
# if cached go to next line
next if cached
# otherwise add to cache
updateCache(line)
end
end
почему не просто установить Foo [к] [0] = new_value; foo [k] [1] = new_value2 – klochner
Покажите пример ввода/ожидаемого вывода, чтобы мы могли лучше понять ваш вопрос. –
@klochner я собирался попробовать это, но я не был уверен, что если ввести foo [k] [1], обновит вторую позицию в массиве v. – CoryDorning