Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія Наступна ревізія | Попередня ревізія | ||
perl:hash [04/06/2022 09:50] – Method | perl:hash [06/06/2022 14:30] (поточний) – Method | ||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
- | ====== | + | ====== |
У цій статті описані основні функції та правила синтаксису для роботи з хешами в Perl. | У цій статті описані основні функції та правила синтаксису для роботи з хешами в Perl. | ||
Рядок 7: | Рядок 7: | ||
Хеш — це невпорядкована група пар ключ-значення. Ключі є унікальними струнами. Значення є скалярними значеннями. Кожне значення може бути числом, | Хеш — це невпорядкована група пар ключ-значення. Ключі є унікальними струнами. Значення є скалярними значеннями. Кожне значення може бути числом, | ||
- | Хеші, як і інші змінні Perl, оголошуються за допомогою ключового слова | + | Хеші, як і інші змінні Perl, оголошуються за допомогою ключового слова |
Хеші є одним з основних типів даних Perl. | Хеші є одним з основних типів даних Perl. | ||
- | ===== Оголошення та ініціалізація ===== | + | Хеші поділяють на однорівневі та багаторівневі. Також можуть зберігатись в своїй формі (%hash) або в формі посилання ($hashref). |
+ | |||
+ | <WRAP center round tip 100%> | ||
+ | Хеш є найкращим типом даних для комунікації між складними функціями, | ||
+ | |||
+ | Також, при такому підході, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Оголошення, ініціалізація та очищення ===== | ||
+ | ==== Оголошення (декларування) ==== | ||
+ | виконується без присвоєння значень, | ||
+ | <code perl>my %hash;</ | ||
+ | зазвичай це використовують для того, щоб відкрити змінну в певній області видимості, | ||
+ | |||
+ | ===== Очищення ===== | ||
+ | Якщо в процесі виконання програми, | ||
+ | <code perl> | ||
+ | або так: | ||
+ | <code perl> | ||
+ | Насправді, | ||
+ | |||
+ | ==== Ініціалізація (присвоєння) ==== | ||
+ | Ініціалізація це присвоєння пустій змінній якогось значення: | ||
+ | <code perl> | ||
+ | |||
+ | Оголошення та ініціалізацію можна об' | ||
+ | <code perl>my %hash = ();</ | ||
+ | |||
+ | Подібно до синтаксису для масивів, | ||
+ | <code perl>my %hash = (' | ||
+ | У наведеному вище коді Perl приймає перший запис у списку як ключ («monday»), | ||
+ | |||
+ | |||
+ | Оператор «**жирна кома**» виглядає як стрілка (' | ||
+ | <code perl> | ||
+ | my %hash = ( | ||
+ | monday | ||
+ | tuesday | ||
+ | wednesday => 71, | ||
+ | thursday | ||
+ | friday | ||
+ | ); | ||
+ | </ | ||
+ | |||
+ | <WRAP center round tip 100%> | ||
+ | Все вищезгадане також підходить для форми посилання ($hashref), замінивши " | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Наповнення, | ||
+ | |||
+ | <WRAP center round important 100%> | ||
+ | * ключем може бути будь-який скаляр. | ||
+ | * ключ може бути переданий в змінній. | ||
+ | * якщо ключ має в собі пробіл або назву оператора - його необхідно взяти в лапки. | ||
+ | </ | ||
+ | |||
+ | <WRAP center round important 100%> | ||
+ | * значення може бути переданий в змінній. | ||
+ | * числове значення треба передавати без лапок. | ||
+ | * рядкове значення треба передавати в лапок. | ||
+ | * результат обрахунку - в простих жужках. | ||
+ | * результат функції - виклик функції. | ||
+ | * масив або хеш - екранувати символом " | ||
+ | </ | ||
+ | |||
+ | При зверненні до елементу хешу по ключу в контексті хешу (%hash), необхідно замінити " | ||
+ | <code perl> | ||
+ | При зверненні до елементу посилання по ключу в контексті посилання ($hashref), необхідно після назви посилання вставити ' | ||
+ | <code perl> | ||
+ | так відбувається присвоєння та зміна значень за ключем. | ||
+ | |||
+ | За такими ж правилами відбувається видалення елементів по ключу, вказавши попереду оператор **delete** та забравши присвоєння: | ||
+ | <code perl> | ||
+ | <code perl> | ||
+ | |||
+ | Також при видаленні можна зберігати значення в іншу змінну, | ||
+ | <code perl>my $a = delete $hash{key};</ | ||
+ | <code perl>my $a = delete $hashref-> | ||
+ | Таким чином в змінну $a буде збережено значення, | ||
+ | |||
+ | |||