A Ha sh используется для хранения пар предметов. Это быстрее и гарантирует, что имена будут уникальными.
$vars = {}
def create(name, value)
$vars[name] = value
end
Тогда удаление будет тривиальным.
$vars.delete(name)
Как и поиск значения.
value = $vars[name]
Хэши запомните порядок, в котором были добавлены ключи. $vars.keys
вернет массив имен в том порядке, в котором они были добавлены. Затем вы можете использовать find_index
, чтобы получить место в списке ключей.
index = $vars.keys.find_index(name)
Помимо того, что пользователь знает порядок, в котором объявлены переменные, это не т много пользы. Переменные не имеют порядка.
Если вы хотите сделать это с массивами, сначала мы исправим create
. Он сохраняет и ключ, и значение в одном массиве.
create(a, 23)
create(b, 42)
# $var = ['a', 23, 'b', 42]
Вместо этого храните каждую пару в отдельном массиве.
def create(name, value)
$vars << [name, value]
end
create(a, 23)
create(b, 42)
# $var = [['a', 23], ['b', 42]]
Затем, чтобы удалить, выполните поиск только первых элементов каждой пары, используя index
. Затем удалите этот индекс.
def delete(name)
idx = $vars.map(&:first).index(name)
$vars.delete_at(idx) if idx
return idx
end
Поиск значения имени будет работать аналогично. Найдите индекс совпадающего имени, найдите эту пару, верните ее второй элемент (значение).
def find(name)
idx = $vars.map(&:first).index(name)
pair = $vars[idx]
return pair[1]
end
Но не делайте этого, используйте Ha sh.