🚀 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 Krzysztof Lewicki Mon, 11 Jan 2010 16:43
Dziwny zapis referencji?
#51755
Author: Krzysztof Lewicki
Date: Mon, 11 Jan 2010 16:43
14 lines
1172 bytes
Dziś spotkałem się z przykładowym kawałkiem "produkcyjnego" kodu:

use X::Y;
(...)
threads->create( \&{X::Y::Z} ); # "Z" to funkcja z modułu X::Y

Nie ma pojęcia jednak co oznacza zapis \&{..} oprócz tego, że zapewne 
zwraca toto referencję :) Czy ktoś może mi wyjaśnić co ów zapis oznacza i 
dlaczego/w jakich sytuacjach się go stosuje? Próbowałem googlować ale 
niczego zbliżonego nie znalazłem...

-- 
pozdrawiam,
menth0l
Re: Dziwny zapis referencji?
#51756
Author: Andrzej Adam Filip
Date: Mon, 11 Jan 2010 16:55
19 lines
1746 bytes
Krzysztof Lewicki <menth0l@remove.this.o2.pl> pisze:
> Dziś spotkałem się z przykładowym kawałkiem "produkcyjnego" kodu:
>
> use X::Y;
> (...)
> threads->create( \&{X::Y::Z} ); # "Z" to funkcja z modułu X::Y
>
> Nie ma pojęcia jednak co oznacza zapis \&{..} oprócz tego, że zapewne 
> zwraca toto referencję :) Czy ktoś może mi wyjaśnić co ów zapis oznacza i 
> dlaczego/w jakich sytuacjach się go stosuje? Próbowałem googlować ale 
> niczego zbliżonego nie znalazłem...

Te nawiasy {} są moim zdaniem zbędne a autor (moim zdaniem) uznał że
poprawiają "czytelność" kodu.

-- 
Andrzej Adam Filip : anfi@onet.eu : Andrzej.Filip@gmail.com
Żadnej paniki na Titanicu.
  -- Przysłowie niemieckie (pl.wikiquote.org)
Re: Dziwny zapis referencji?
#51757
Author: ppapro
Date: Tue, 12 Jan 2010 08:40
24 lines
2071 bytes
On 11 Sty, 17:43, Krzysztof Lewicki <ment...@remove.this.o2.pl> wrote:
> Dziś spotkałem się z przykładowym kawałkiem "produkcyjnego" kodu:
>
> use X::Y;
> (...)
> threads->create( \&{X::Y::Z} ); # "Z" to funkcja z modułu X::Y
>
> Nie ma pojęcia jednak co oznacza zapis \&{..} oprócz tego, że zapewne
> zwraca toto referencję :) Czy ktoś może mi wyjaśnić co ów zapis oznacza i
> dlaczego/w jakich sytuacjach się go stosuje? Próbowałem googlować ale
> niczego zbliżonego nie znalazłem...
>
> --
> pozdrawiam,
> menth0l

Prawdopodobnie jest to referencja do funkcji X::Y::Z. Faktycznie
nawiasy czasami można pominąć jednak nie jestem pewien czy w tym
wypadku.

Wiecej info jest tutaj: http://docstore.mik.ua/orelly/perl/cookbook/ch11_05.htm

Pozdrawiam
Pawel
Re: Dziwny zapis referencji?
#51758
Author: Szymon Sokół
Date: Tue, 12 Jan 2010 15:57
32 lines
2449 bytes
On Tue, 12 Jan 2010 00:40:24 -0800 (PST), ppapro wrote:

> On 11 Sty, 17:43, Krzysztof Lewicki <ment...@remove.this.o2.pl> wrote:
>> Dziś spotkałem się z przykładowym kawałkiem "produkcyjnego" kodu:
>>
>> use X::Y;
>> (...)
>> threads->create( \&{X::Y::Z} ); # "Z" to funkcja z modułu X::Y
>>
>> Nie ma pojęcia jednak co oznacza zapis \&{..} oprócz tego, że zapewne
>> zwraca toto referencję :) Czy ktoś może mi wyjaśnić co ów zapis oznacza i
>> dlaczego/w jakich sytuacjach się go stosuje? Próbowałem googlować ale
>> niczego zbliżonego nie znalazłem...
>>
>> --
>> pozdrawiam,
>> menth0l
> 
> Prawdopodobnie jest to referencja do funkcji X::Y::Z. Faktycznie
> nawiasy czasami można pominąć jednak nie jestem pewien czy w tym
> wypadku.

Rany, ludzie, to tak trudno sprawdzić empirycznie? 30s mi to zajęło.
Zresztą, na rozum, po co miałyby te nawiasy być potrzebne? Jak niby inaczej
Perl miałby zinterpretować \&X::Y::Z bez nawiasów, żeby było potrzebne
ujednoznacznienie? 

-- 
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
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