【问题标题】:Why does this Perl function return a value?为什么这个 Perl 函数返回一个值?
【发布时间】:2010-09-25 03:34:58
【问题描述】:
   $hi = do_this('asdf');

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

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

既然 do_this 什么都没有返回,那它还怎么打印 j?

【问题讨论】:

  • 希望您在代码中的其他位置,我们只是在 sn-p 中看不到它,但您应该包含 use strict; use warnings;

标签: perl


【解决方案1】:

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

在没有明确返回的情况下, 子程序、eval 或 do FILE 自动返回的值 评估的最后一个表达式

【讨论】:

  • 还有do BLOCK和任何其他在非空上下文中的块结构
【解决方案2】:

所有 Perl 5 子例程都返回执行的最后一条语句的最后一个值。

【讨论】:

  • ...假设他们没有遇到return 声明
  • @friedo:如果他们遇到return 语句,最后执行的语句是什么? :P
  • 嗯,不那么奇怪的说法是最后一个评估表达式的结果。这可能不是“最后一个值”,因为子例程可以返回多个项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多