Article View: pl.comp.lang.perl
Article #39806Re: hash w hashu i jeszcze tablcia skalarów
From: Grzegorz Szyszlo
Date: Thu, 21 Oct 2004 08:21
Date: Thu, 21 Oct 2004 08:21
72 lines
3173 bytes
3173 bytes
Szymon Sokół wrote:
> Zbyszek Malec <zbyszekto@tlen.pl> wrote:
> : Mam takie pytanie. Czy da się jako wartość hasha przechowywać drugiego
> : hasha któy z kolei przechowuje tablicę skalarów? Na necie znajduję
> : sprzeczne dane.
> Da się. A dokładnie to referencję do hasha, który zawiera referencję do
> tablicy.
gorzej. hash, ktory zawiera referencje do pozostalych hashy, jedna "komorka"
hasha to referencja do osobnego podrzednego hasha. z kolei kazdy podrzedny
hash, zawiera referencje do podleglych mu tablic.
my %a=(
pierwszy =>
{k1=> [1,2,3],
k2=> [5,6,7]
}
,
drugi =>
{k1=> [11,12,13],
k2=> [15,16,17]
}
,
trzeci =>
{k1=> [21,22,23],
k2=> [25,26,27]
}
);
i odwolanie np. przez:
print $a{drugi}{k1}[3],"\n";
btw. napychanie takiej struktury to osobny problem :)
a konstrukcja $a{drugi}{k1}[3] to jest skrot, bo dereferencje
robia sie automatycznie. tak naprawde jest to:
$a{drugi}->{k1}->[3]
co jest ladniejsza forma dla bardziej zlozonego zapisu ktorego
nie przytocze, bo sam bym mial problemy ze zrozumieniem :))))
wlasnie dlatego nie cierpie zlozonych struktur w C, pomimo ze te z pascala
bardzo lubie, pomimo ze moga zawierac referencje do tablic referencji referencji
i tego typu historie :))
> : Próbowałem zrobić coś takiego ale dostaję errora że powinienem zrobić
> : $locations zamiast @locations (niby logiczne o ile hash może
> : przechowywać jedynie skalary)
>
> : @locations = @words{$word}{$fileName};
to zalezy co chesz wyciagnac :)
>
> Składnia zła. Jeśli %words jest tym hashem, $words{$word} jest referencją do
> drugiego hasha, $words{$word}{$fileName} jest referencją do tablicy, a
> sama tablica to @{$words{$word}{$fileName}} - powinno zadziałać:
> @locations = @{$words{$word}{$fileName}}
ech te "priorytety" :) zawsze mnie to wkurzalo. wzorem dla mnie
sa struktury w pascalu, gdzie sie wszystko robi (deklaruje, uzywa, czyta)
od lewej do prawej, bez patrzenia co z ktorej strony jest wazniejsze
i jakie ma wiazanie.
szkoda ze @$words{$word}{$fileName} nie dziala jak powinno, bo @ jest
wazniejsze od koncowego {...} :(
znik.
Technical Details
Message-ID:
<cl7rj4$jhg$1@news.lublin.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!lublin.pl!news.lublin.pl!not-for-mailReferences:
<1098302099.409440@vax.ustronie.pw.edu.pl> <cl6h30$agm$1@galaxy.uci.agh.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!lublin.pl!news.lublin.pl!not-for-mail From: Grzegorz Szyszlo <znik@wbc.lublin.pl> Newsgroups: pl.comp.lang.perl Subject: Re: hash w hashu i jeszcze tablcia skalarów Date: Thu, 21 Oct 2004 10:21:09 +0200 Organization: lubman Lines: 73 Message-ID: <cl7rj4$jhg$1@news.lublin.pl> References: <1098302099.409440@vax.ustronie.pw.edu.pl> <cl6h30$agm$1@galaxy.uci.agh.edu.pl> NNTP-Posting-Host: user.wbc.lublin.pl Mime-Version: 1.0 X-Trace: news.lublin.pl 1098346916 20016 212.182.104.10 (21 Oct 2004 08:21:56 GMT) X-Complaints-To: abuse@news.lublin.pl NNTP-Posting-Date: Thu, 21 Oct 2004 08:21:56 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030721 Debian/1.4-1.nobse.2 X-Accept-Language: pl, en-us In-Reply-To: <cl6h30$agm$1@galaxy.uci.agh.edu.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit