🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
4 messages
4 total messages Started by Stachu 'Dozzie' K. Sun, 26 Dec 2010 11:39
%hash = (a => 1, b => 2, a => 3)
#52135
Author: Stachu 'Dozzie' K.
Date: Sun, 26 Dec 2010 11:39
19 lines
1534 bytes
Damn, chłopaki, wspomóżcie. W którym perldocu jest wpisane, że przy
inicjalizacji hasza listą, jeśli klucz się powtórzy, brana jest wartość
z ostatniego powtórzenia? Znaczy, z kodu poniżej wyjdzie liczba 3:
#v+
%hash = (
  a => 1,
  b => 2,
  a => 3,
);
print $hash{a};
#v-

Że tak jest, to łatwo sprawdzić, ale mnie interesuje gwarancja
pochodząca z dokumentacji, a jakoś nie mogę tego znaleźć (perldata,
perldsc, perlfaq).

-- 
Secunia non olet.
Stanislaw Klekot
Re: %hash = (a => 1, b => 2, a => 3)
#52136
Author: Maciej Misiak
Date: Sun, 26 Dec 2010 13:30
25 lines
1728 bytes
W dniu 2010-12-26 12:39, Stachu 'Dozzie' K. pisze:
> Damn, chłopaki, wspomóżcie. W którym perldocu jest wpisane, że przy
> inicjalizacji hasza listą, jeśli klucz się powtórzy, brana jest wartość
> z ostatniego powtórzenia? Znaczy, z kodu poniżej wyjdzie liczba 3:
> #v+
> %hash = (
>    a =>  1,
>    b =>  2,
>    a =>  3,
> );
> print $hash{a};
> #v-
>
> Że tak jest, to łatwo sprawdzić, ale mnie interesuje gwarancja
> pochodząca z dokumentacji, a jakoś nie mogę tego znaleźć (perldata,
> perldsc, perlfaq).

Ja widzę tylko w perldata zdanie:
'Note that just because a hash is initialized in that order doesn't mean 
that it comes out in that order.'

ale nic konkretniejszego nie mogę znaleźć.

-- 
grizzley
Re: %hash = (a => 1, b => 2, a => 3)
#52137
Author: Szymon Sokół
Date: Sun, 26 Dec 2010 23:52
38 lines
2559 bytes
On Sun, 26 Dec 2010 11:39:30 +0000 (UTC), Stachu 'Dozzie' K. wrote:

> Damn, chłopaki, wspomóżcie. W którym perldocu jest wpisane, że przy
> inicjalizacji hasza listą, jeśli klucz się powtórzy, brana jest wartość
> z ostatniego powtórzenia? Znaczy, z kodu poniżej wyjdzie liczba 3:
> #v+
> %hash = (
>   a => 1,
>   b => 2,
>   a => 3,
> );
> print $hash{a};
> #v-
> 
> Że tak jest, to łatwo sprawdzić, ale mnie interesuje gwarancja
> pochodząca z dokumentacji, a jakoś nie mogę tego znaleźć (perldata,
> perldsc, perlfaq).

W dokumentacji nie ma, a pytanie, sądząc z pobieżnego guglania, pojawiało
się parokrotnie na różnych forach. Najbliższe autorytatywnej odpowiedzi jest
chyba to, co napisano w http://perl101.org/hashes.html 

Combine hashes with list assignment

To combine two hashes, look at them as lists and assign them to a hash.

    my %new_hash = (%hash1, %hash2);

The right-hand side of the equals is a long list of key/value pairs from
both of the hashes. The list is then assigned to %new_hash. If any keys in
%hash2 duplicate keys in %hash1, the %hash2 key/value pair take priority
because they're assigned later.

-- 
Szymon Sokół (SS316-RIPE) -- Network Manager                                 B
Computer Center, AGH - University of Science and Technology, Cracow, Poland  O
http://home.agh.edu.pl/szymon/ PGP key id: RSA: 0x2ABE016B, DSS: 0xF9289982  F
Free speech includes the right not to listen, if not interested -- Heinlein  H
Re: %hash = (a => 1, b => 2, a => 3)
#52138
Author: Stachu 'Dozzie' K.
Date: Mon, 27 Dec 2010 08:55
21 lines
2039 bytes
On 2010-12-26, Szymon Sokół <szymon@bastard.operator.from.hell.pl> wrote:
>> Że tak jest, to łatwo sprawdzić, ale mnie interesuje gwarancja
>> pochodząca z dokumentacji, a jakoś nie mogę tego znaleźć (perldata,
>> perldsc, perlfaq).
>
> W dokumentacji nie ma, a pytanie, sądząc z pobieżnego guglania, pojawiało
> się parokrotnie na różnych forach. Najbliższe autorytatywnej odpowiedzi jest
> chyba to, co napisano w http://perl101.org/hashes.html 
>
[...]
> If any keys in
> %hash2 duplicate keys in %hash1, the %hash2 key/value pair take priority
> because they're assigned later.

Szkoda że nie ma w dokumentacji. Nic to, będę musiał zawierzyć mojej
umowie z Perlem (Perl się domyśla o co mi chodziło, a ja mu tego nie
utrudniam). Dzięki.

-- 
Secunia non olet.
Stanislaw Klekot
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads