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

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

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

vì do_this không trả lại bất kỳ thứ gì, nó vẫn in như thế nào?Tại sao hàm Perl này trả về một giá trị?

+0

Hy vọng rằng bạn ở đâu đó trong mã của mình và chúng tôi không thấy nó trong đoạn mã, nhưng bạn nên bao gồm 'sử dụng nghiêm ngặt; sử dụng các cảnh báo; ' – Daenyth

Trả lời

25

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

Trong sự vắng mặt của một sự trở lại rõ ràng, một chương trình con, eval, hoặc NỘP tự động trả về giá trị của biểu thức cuối cùng đánh giá

+0

cũng' do BLOCK' và bất kỳ cấu trúc khối nào khác khi nó ở trong ngữ cảnh không bị vô hiệu –

4

Tất cả Perl 5 chương trình con trở lại giá trị cuối cùng của câu lệnh cuối được thực hiện.

+0

... giả sử chúng không đạt được câu lệnh trả về 'return' – friedo

+0

@friedo: Nếu chúng đạt đến câu lệnh' return' , câu lệnh cuối cùng được thực thi là gì? : P –

+2

Vâng, cách ít nói là kết quả của biểu thức được đánh giá cuối cùng. Đó có thể không phải là "giá trị cuối cùng" vì các trình con có thể trả về nhiều mục. –

Các vấn đề liên quan