Nano Hash - криптовалюты, майнинг, программирование

Метаинформация хэша Perl

Можно ли хранить в нем информацию о хеше? И под этим я подразумеваю без добавления информации к хэшу обычным способом, который повлиял бы на ключи, значения и т.д.

Дело в том, что я читаю twod_array в хеш, но хотел бы сохранить порядок в исходном массиве, не влияя на то, как он проходит через хэш и т. д.

так например:

my @the_keys=keys %the_hash;

не должен возвращать информацию о порядке хеша.

Есть ли способ хранить метаданные в хеше?

02.07.2012

Ответы:


1

Вы можете хранить произвольные метаданные с помощью tie механизма. Минимальный пример с хранилищем пакетов, которое не влияет на стандартный хэш-интерфейс:

package MetadataHash;
use Tie::Hash;
use base 'Tie::StdHash';
use Scalar::Util qw(refaddr);
our %INSERT_ORDER;
sub STORE {
    my ($h, $k, $v) = @_;
    $h->{$k} = $v;
    push @{ $INSERT_ORDER{refaddr $h} }, $k;
}
1;

package main;
tie my %h, 'MetadataHash';
%h = ( I => 1, n => 2, d => 3, e => 4 );
$h{x} = 5;
# %MetadataHash::INSERT_ORDER is (9042936 => ['I', 'n', 'd', 'e', 'x'])
print keys %h;
# 'enIxd'
02.07.2012

2

Что ж, всегда можно использовать Tie::Hash::Indexed, я предполагать:

use Tie::Hash::Indexed;

tie my %hash, 'Tie::Hash::Indexed';
%hash = ( I => 1, n => 2, d => 3, e => 4 );
$hash{x} = 5;

print keys %hash, "\n";    # prints 'Index'
print values %hash, "\n";  # prints '12345'
02.07.2012
  • keys %the_hash не должен не возвращать информацию о порядке хэша, не так ли? 02.07.2012
  • Я полагаю, что OP означает, что мы не должны хранить информацию о порядке внутри хеша в качестве его элемента, так или иначе. В противном случае это не имеет смысла - как мы можем узнать, что хэш упорядочен, если не путем повторения его ключей/значений? 02.07.2012
  • Он не должен возвращать заказ, нет. Предполагается, что ключи в хэшах по своей природе неупорядочены. 02.07.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..