2010-09-24 16 views
6
$hi = do_this('asdf'); 

    sub do_this 
    { 
     $blob{'f'} = { 
      'k' => 'j' 
     }; 
    } 

    print $hi->{'k'}; 
    # prints j 

ponieważ do_this nic nie zwraca, jak to jest nadal drukować j?Dlaczego ta funkcja Perla zwraca wartość?

+0

Mam nadzieję, że jesteś gdzie indziej w swoim kodzie, a my po prostu nie widzimy go we fragmencie, ale powinieneś dodać 'use strict; używaj ostrzeżeń; ' – Daenyth

Odpowiedz

25

http://perldoc.perl.org/functions/return.html

W braku wyraźnego zamian podprogram, eval lub nie SEGREGUJEMY automatycznie zwraca wartość ostatniej wypowiedzi ocenianego

+0

także' do BLOCK' i każdej innej struktury blokowej, gdy jest w non-void kontekście –

4

Wszystko Perl 5 podprogramów powrót ostatnia wartość ostatniej wykonanej instrukcji.

+0

... zakładając, że nie trafią one 'return' oświadczenie – friedo

+0

@friedo: Jeśli trafią na' return' oświadczenie , jakie jest ostatnie zdanie? : P –

+2

Cóż, mniej dziwny sposób, aby powiedzieć, że jest wynikiem ostatniego, ocenianego wyrażenia. To może nie być "ostatnia wartość", ponieważ podprogramy mogą zwracać wiele elementów. –

Powiązane problemy