Perl/Tablice: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
m nawigacja, link fix |
mNie podano opisu zmian |
||
Linia 10:
print "The values are: ", $length, $width, $depth, "\n";
{| WIDTH="75%" | style="background-color: #f2fff2; border: solid 1px #bfffbf; padding: 1em;" valign=top|
Linia 20 ⟶ 19:
Podczas tworzenia listy z kilkoma łańcuchami znaków bez spacji, Perl dostarcza skrót, który pomija wstawianie przecinków i kropek. Zamiast
($name1, $name2, $name3, $name4) = ('Paul', 'Michael', 'Jessica', 'Megan');
Możesz użyć operatora <tt>qw//</tt>. Operator ten używa niealfanumerycznych znaków jako ogranicznik (zazwyczaj znaku <tt>/</tt> ) i ogranicza spacjami kolejne elementy. Ogranicznik oddziela polecenie od argumentów. Poniższa linia oznacza to samo, co powyższa:
($name1, $name2, $name3, $name4) = qw/Paul Michael Jessica Megan/;
Linia 27 ⟶ 26:
($name1, $name2, $name3, $name4) = qw(Paul Michael Jessica Megan);
{| WIDTH="75%" | style="background-color: #f2fff2; border: solid 1px #bfffbf; padding: 1em;" valign=top|
|'''Uwaga'''</br>''Wynik używania operatora <tt>qw//</tt> jest podobny, jak pojedyńczego cudzysłowia tzn. łańcuch znaków nie jest interpolowany. Jeśli potrzebujesz dołączyć zmienną w twojej liście, nie możesz używać tej metody.''
Linia 34 ⟶ 33:
===Przypisywanie za pomocą list===
Jak już zobaczyliśmy, listy mogą być
Jeśli mamy
#!/usr/bin/perl
($length, $width) = (10, $w, 15); #$length ma 10, $width ma wartość taką samą jak $w.
Jeśli mamy więcej zmiennych po lewej, niż po prawej, dodatkowa wartość będzie posiadała domyślną wartość <tt>undef</tt>:
Linia 47 ⟶ 45:
#!/usr/bin/perl
($length, $width, $depth) = (10, $w); #$length ma 10, $width ma wartość taką samą jak $w.
Przypisywanie poprzez listy umożliwia nam w łatwy sposób zamianę wartości dwóch zmiennych (swap), bez potrzeby tworzenia dodatkowej, tymczasowej wartości:
Linia 61 ⟶ 59:
==Tablice==
Tablica w Perlu, jest zmienną przechowywującą listę. Tablica może być modyfikowana, może dodawać elementy i je usuwać, opróżniać, ponownie przypisanie do całkowicie różnych list. Podobnie
{| WIDTH="75%" | style="background-color: #f2fff2; border: solid 1px #bfffbf; padding: 1em;" valign=top|
|'''Uwaga'''</br>
''Używanie nazwy 'lista' i 'tablica' zamiennie jest
|}
===Przypisywanie tablicy===
Linia 85 ⟶ 82:
@all = @nums, @more; #@all przechowuje wszystkie liczby od 1 do 1000
Ostatni przykład pokazuje cechę perla znaną jako 'array flattening' (płaszczenie tablicy). Kiedy tablica jest używana w liście,
▲Ostatni przykład pokazuje cechę perla znaną jako 'array flattening' (płaszczenie tablicy). Kiedy tablica jest używana w liście, tablica ta zapełnia listę '''elementami''' znajdującymi się w niej, a nie tworzy tablicę w tablicy. Jak wspomnieliśmy wcześniej, lista jest zbiorem tylko '''zmiennych skalarnych'''. Tak więc tablica <tt>@all</tt> przechowuje 1000 elementów, a nie 2.
{| WIDTH="75%" | style="background-color: #f2fff2; border: solid 1px #bfffbf; padding: 1em;" valign=top|
Linia 107 ⟶ 103:
{| WIDTH="75%" | style="background-color: #f2fff2; border: solid 1px #bfffbf; padding: 1em;" valign=top|
|'''Uwaga'''</br>''Powszechnym poglądem jest, że '''lista''' w kontekście skalara także zwraca swoją wielkość. Nie jest to prawdą. W rzeczywistości, kiedy użwasz operatora przecinek w kontekście zmiennej skalarnej nie tworzysz listy, lecz uwzględnia
$name = qw/Paul Michael Jessica Megan/;
print "The last name in my list is $name\n";
Linia 120 ⟶ 116:
print "My names are: @names.\n";</tt>
W
My names are: PaulMichaelJessicaMegan.
Linia 146 ⟶ 142:
print @array[0]; # Także pokaże 1, ale jest to niepoprawne<br>
W rzeczywistości <code>@array[0]</code> jest <i>kawałkiem</i> tablicy (czyli pod-
===Powszechne funkcje na tablicach===
==
* [[Programming:Perl Function reference#List functions|Perl:List Functions]]
|