/ / Co @ {hash {$ key}} oznacza w Perlu? - perl, hashtable

Co to jest @ {hash {$ key}} w Perlu? - perl, hashtable

Czy ktoś może mi to powiedzieć? @{hash{$key}} znaczy? i czy miałem rację, kiedy pisałem @{hash{$key}}[$i]=$list[$i+1]?

Odpowiedzi:

7 dla odpowiedzi № 1
@{hash{$key}}

to dziwny sposób pisania

@hash{$key}

Nazywa się to skrótem mieszającym. Pozwala pobierać wiele wartości z hasha za jednym razem. Na przykład,

say for @hash{"a", "b"};

znaczy

say for $hash{a}, $hash{b};

Więc jest to dość głupie

@hash{$key}

zamiast

$hash{$key}

@{hash{$key}}[$i]=$list[$i+1]; nie kompiluje się, więc nie, nie było w porządku z niego korzystać.


3 dla odpowiedzi № 2

Jak wyjaśnia ikegami, @{hash{$key}} jest fragmentem skrótu (tylko jednego elementu).

Prawdopodobnie zamiast tego chcesz: @{$hash{$key}}. Jeśli każdy element twojego skrótu jest odwołaniem do tablicy, ta składnia umożliwi dostęp do tablicy.

Na przykład załóżmy, że twój hasz zawierał tablice, takie jak to:

my %hash = (
foo => [1, 2, 3, 4, 5],
bar => [qw/baz sproing blargh/]
);

@{$hash{foo}} byłoby (1, 2, 3, 4, 5)

Jeśli tak, to ta składnia będzie działać:

${$hash{$key}}[$i]=$list[$i+1]

Zauważ, że uzyskujesz dostęp tylko do elementu tablicy, a nie do całej tablicy. W ten sposób używasz ${$hash{$key}} zamiast @{$hash{$key}}.

Innym sposobem robienia tego samego jest:

$hash{$key}->[$i]=$list[$i+1]

The -> Składnia do dereferencji jest często preferowana ${...}, ponieważ jest czystszy, zwłaszcza gdy masz złożoną strukturę danych.