Показати сторінкуСтарі ревізіїПосилання сюдиЕкспорт до PDFПовернутися наверх Ця сторінка доступна тільки для перегляду. Ви можете продивитися вихідний текст, але не можете змінювати його. Якщо ви вважаєте, що це не вірно, зверніться до адміністратора. ====== %hash ====== У цій статті описані основні функції та правила синтаксису для роботи з хешами в Perl. Хеш - це асоціативний масив, оскільки звернення до його значень здійснюється за допомогою скалярних ключів, а не його числових індексів. В інших мовах програмування хеші називають інакше, наприклад, просо асоціативними масивами, словниками, списками або картами. Хеш — це невпорядкована група пар ключ-значення. Ключі є унікальними струнами. Значення є скалярними значеннями. Кожне значення може бути числом, рядком або посиланням. Кожен хеш-ключ пов’язаний з одним значенням , і всі ключі є унікальними всередині однієї хеш-структури. Це означає, що повторювані ключі заборонені. Хеші, як і інші змінні Perl, оголошуються за допомогою ключового слова **my**. Назві змінної передує знак відсотка ( **%** ). Це невеликий мнемонічний трюк, який допоможе вам нагадати про структуру ключ-значення. Хеші є одним з основних типів даних Perl. Хеші поділяють на однорівневі та багаторівневі. Також можуть зберігатись в своїй формі (%hash) або в формі посилання ($hashref). <WRAP center round tip 100%> Хеш є найкращим типом даних для комунікації між складними функціями, коли функція може повертати різний тип даних або їх кількість. Також, при такому підході, вам буде легко вдосконалювати ваші програми з можливістю збереження функціонування між різними версіями. </WRAP> ===== Оголошення, ініціалізація та очищення ===== ==== Оголошення (декларування) ==== виконується без присвоєння значень, наступним чином: <code perl>my %hash;</code> зазвичай це використовують для того, щоб відкрити змінну в певній області видимості, коли присвоєння виконується в різнорівневих блоках. ===== Очищення ===== Якщо в процесі виконання програми, вам потрібно очистити або знищити хеш, робіть це так: <code perl>%hash = ();</code> або так: <code perl>%hash = undef;</code> Насправді, оголошену змінну не можливо видалити, а лише очистити для звільнення оперативної пам'яті або для повторного використання з новими даними. ==== Ініціалізація (присвоєння) ==== Ініціалізація це присвоєння пустій змінній якогось значення: <code perl>%hash = ();</code> Оголошення та ініціалізацію можна об'єднати в одну команду, зразу присвоївши значення: <code perl>my %hash = ();</code> Подібно до синтаксису для масивів, хеші також можуть бути оголошені за допомогою списку значень, розділених комами: <code perl>my %hash = ('monday', 65, 'tuesday', 68, 'wednesday', 71, 'thursday', 53, 'friday', 60);</code> У наведеному вище коді Perl приймає перший запис у списку як ключ («monday»), а другий запис — як значення цього ключа (65). Третій запис у списку («tuesday») буде оголошено як ключ, а четвертий запис (68) як його значення тощо. Оператор «**жирна кома**» виглядає як стрілка ('**=>**') і дозволяє оголошувати пари значень ключів замість коми. Це робить код більш чистим і читабельним. Крім того, під час використання жирної коми не потрібно брати рядки в лапки для ключів. Використовуючи жирну кому, те саме оголошення %hash виглядатиме так: <code perl> my %hash = ( monday => 65, tuesday => 68, wednesday => 71, thursday => 53, friday => 60, ); </code> <WRAP center round tip 100%> Все вищезгадане також підходить для форми посилання ($hashref), замінивши "%" на "$" та прості дужки "()" на фігурні "{}". </WRAP> ===== Наповнення, зміна та видалення ===== <WRAP center round important 100%> * ключем може бути будь-який скаляр. * ключ може бути переданий в змінній. * якщо ключ має в собі пробіл або назву оператора - його необхідно взяти в лапки. </WRAP> <WRAP center round important 100%> * значення може бути переданий в змінній. * числове значення треба передавати без лапок. * рядкове значення треба передавати в лапок. * результат обрахунку - в простих жужках. * результат функції - виклик функції. * масив або хеш - екранувати символом "\". </WRAP> При зверненні до елементу хешу по ключу в контексті хешу (%hash), необхідно замінити "%" на "$" та у фігурні дужки "{}" вказати ключ: <code perl>$hash{key} = 'value';</code> При зверненні до елементу посилання по ключу в контексті посилання ($hashref), необхідно після назви посилання вставити '->' та у фігурні дужки "{}" вказати ключ: <code perl>$hashref->{key} = 'value';</code> так відбувається присвоєння та зміна значень за ключем. За такими ж правилами відбувається видалення елементів по ключу, вказавши попереду оператор **delete** та забравши присвоєння: <code perl>delete $hash{key};</code> <code perl>delete $hashref->{key};</code> Також при видаленні можна зберігати значення в іншу змінну, наприклад в скаляр: <code perl>my $a = delete $hash{key};</code> <code perl>my $a = delete $hashref->{key};</code> Таким чином в змінну $a буде збережено значення, яке було видалено з хешу (посилання). perl/hash.txt Востаннє змінено: 06/06/2022 14:30повз Method Увійти