perl:hash

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
Наступна ревізія
Попередня ревізія
perl:hash [04/06/2022 10:09] Methodperl:hash [06/06/2022 14:30] (поточний) Method
Рядок 7: Рядок 7:
 Хеш — це невпорядкована група пар ключ-значення. Ключі є унікальними струнами. Значення є скалярними значеннями. Кожне значення може бути числом, рядком або посиланням. Кожен хеш-ключ пов’язаний з одним значенням , і всі ключі є унікальними всередині однієї хеш-структури. Це означає, що повторювані ключі заборонені. Хеш — це невпорядкована група пар ключ-значення. Ключі є унікальними струнами. Значення є скалярними значеннями. Кожне значення може бути числом, рядком або посиланням. Кожен хеш-ключ пов’язаний з одним значенням , і всі ключі є унікальними всередині однієї хеш-структури. Це означає, що повторювані ключі заборонені.
  
-Хеші, як і інші змінні Perl, оголошуються за допомогою ключового слова //my//. Назві змінної передує знак відсотка ( **%** ). Це невеликий мнемонічний трюк, який допоможе вам нагадати про структуру ключ-значення.+Хеші, як і інші змінні Perl, оголошуються за допомогою ключового слова **my**. Назві змінної передує знак відсотка ( **%** ). Це невеликий мнемонічний трюк, який допоможе вам нагадати про структуру ключ-значення.
  
 Хеші є одним з основних типів даних Perl. Хеші є одним з основних типів даних 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.1654337342.txt.gz
  • Востаннє змінено: 04/06/2022 10:09
  • повз Method