Вернувшись к развитию после отсутствия более десяти лет, я собираюсь ускориться с использованием новейших технологий для веб-разработки. Чтение this сообщение Я вижу, что я уже понял разницу между хэшами и массивами.Почему массивы не реализованы как хэши с числовыми ключами?
Однако, разве это не означает, что массивы - это всего лишь тип хеша, который использует числовой ключ? Поскольку нет оснований полагать, что реализация массива будет автоматически поддерживать последовательный характер индексов массива (когда вы удаляете или вставляете элементы, например), есть ли какая-либо большая разница, чем встроенный порядок массива?
Я имею в виду, чтобы пройти через массив, вам нужно настроить цикл через индексы, то же самое, что и цикл с помощью хэширования, а затем вы можете заказать набор числового хэша, который будет вести себя одинаково (т.е. доступ к элементам от 1 до последнего числа, которое является ключом в хеше в числовой последовательности). Чтобы получить доступ к элементу массива, вы используете индексы нужного значения, то же самое, что и числовой ключ из хэша.
Я пришел к этому вопросу, узнав о массивах и хэшах в Ruby on Rails, но это общий вопрос.
Хорошо, так что выгода от наличия отдельных реализаций массивов и хешей является одним из сложности? Другими словами, иногда массив делает все необходимое, поэтому использование хэша с числовым ключом происходит от массива, до хэша, обратно в массив (из-за того, что вы делали о преобразовании ключей в целые числа), обратно в хеш , которые вы затем вынуждаете вести себя как массив!Должен ли я думать о хэшах как о добавлении некоторой функциональности в структуру данных массива, а в том, что массив является особым случаем хэш-структуры данных? – NectarSoft
Только что изменил мой ответ. Да, менее эффективно использовать хэш с числовым ключом, если ключи являются более или менее целыми целыми числами. Хеш-функция и перезагрузка могут быть дополнительными накладными расходами. Мне нравится думать о хешах как о переводе между другими типами, включая объекты и индексы массива. Вам не всегда нужен перевод, а когда нет, это контрпродуктивно. –
Хорошо, спасибо. Хотя они кажутся одинаковыми или очень похожими, я думаю, что они, по сути, разные звери. Мне кажется, что всякий раз, когда это необходимо, массив должен быть предпочтительным. Хэши предназначены для разных ситуаций, когда целью является не просто хранить диапазон данных, но когда важно, что такое ключ массива. Спасибо за объяснение @ La-comadreja. – NectarSoft