Perl,懒洋洋地评估字符串

前端之家收集整理的这篇文章主要介绍了Perl,懒洋洋地评估字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
请考虑以下Perl代码.
  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. $b="1";
  7.  
  8. my $a="${b}";
  9.  
  10. $b="2";
  11.  
  12. print $a;

脚本显然输出1.我希望它是$b的当前值.

Perl中最聪明的方法是如何实现这样的懒惰评估?我希望${b}保持“未替代”,直到需要$a.

解决方法

我更想知道你为什么要这样做.根据您真正需要做的事情,您可以使用各种方法.

您可以将代码包装在coderef中,并仅在需要时对其进行评估:

  1. use strict; use warnings;
  2.  
  3. my $b = '1';
  4. my $a = sub { $b };
  5. $b = '2';
  6. print $a->();

这种方法的一个变体是使用命名函数作为closure(这可能是最好的方法,在你的调用代码的更大的上下文中):

  1. my $b = '1';
  2. sub print_b
  3. {
  4. print $b;
  5. }
  6.  
  7. $b = '2';
  8. print_b();

您可以使用对原始变量的引用,并根据需要取消引用它:

  1. my $b = '1';
  2. my $a = \$b;
  3. $b = '2';
  4. print $$a;

猜你在找的Perl相关文章