• 匿名函数和闭包


    sub {} 是匿名函数的语法,匿名函数是引用
    
    
    [root@wx03 1215]# cat a1.pl 
    use Data::Dumper;
    
    my $a= sub {return 'aa'};
    
    print $a;
    print "
    ";
    print Dumper($a);
    print &$a;
    [root@wx03 1215]# perl a1.pl 
    CODE(0x1117c18)
    $VAR1 = sub { "DUMMY" };
    aa[root@wx03 1215]# 
    
    
    这种类型的子程序,可以访问所有的词法变量存在在我们声明它的时候 被称为一个闭包
    
    在perl里,闭包是一个子程序引用变量已超出范围
    
    
    这是一个观念 ,如果你定义了一个匿名函数在一个特定的词汇语境,它假装泡在这个环境,即使当它是在上下文之外被调用
    
    在面向对象的语言里面, 一个闭包是一个可调用的对象, 保存信息从它创建的范围。
    
    从这个定义,你可以见到一个内部的类是一个基于面向对象的闭包,
    
    因为它不只是包含每条信息从外部类
    
    但它会自动保存一个引用到整个外部类的对象
    
    [root@wx03 1215]# cat a3.pl 
    
    {
    	my $inc = 10;
    
    	sub incr {
    		print "$inc
    ";
    		$inc++;
    	}
    };
    print "$inc is $inc
    ";
    incr();
    incr();
    
    
    [root@wx03 1215]# perl a3.pl 
    $inc is 
    10
    11
    
    

  • 相关阅读:
    Phpstorm+Xdebug配置
    ThinkPHP5.0---URL访问
    Thinkphp5创建控制器
    ThinkPHP5.0的安装
    网页动态背景——随鼠标变换的动态线条
    git SSH
    [go] 循环与函数
    svg make a face
    Hello Vizhub
    Beetlsql自定义生成entity,mapper,md代码
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350528.html
Copyright © 2020-2023  润新知