zoukankan      html  css  js  c++  java
  • perl use base 代替 @ISA

    packge Mule;
    use base ("Horse", "donkey"); # 声明一个超类
    它是下面东西的缩写:
    package Mule;
    BEGIN {
    our @ISA = ("Horse", "Donkey");
    require Horse;
    require Donkey;
    }
    
    
    Horse 类 :
    
    [root@wx03 test]# cat Horse.pm 
    package Horse;
    BEGIN {
    our @ISA = "Critter";
    require Critter;
    };
    sub new {
    my $invocant = shift;
    my $class = ref($invocant) || $invocant;
    my $self = {
    color => "bay",
    legs => 4,
    owner => undef,
    @_, # 覆盖以前的属性
    };
    return bless $self, $class;
    #return  $self;
    };
    sub sum1 {
           $self=shift;
           my $a=shift;
           my $b=shift;
           return $a + $b + 7;
    };
    
    our @arr=qw/1 2 3 4 5 6 7/;
    our %h1=(1,2,3,4,5,6,7,8);
    1;
    
    
    Critter类:
    
    [root@wx03 test]# cat Critter.pm 
    package Critter;
    sub new {
        my $self = {};
        my $invocant = shift;    
    my $class = ref($invocant) || $invocant;
    	my ($name)=@_;    
          my $self = {    
             "name" =>$name    
                     };  
        bless $self, $class; # Use class name to bless() reference
        return $self;
    
    };
    
    sub sum2 {
           $self=shift;
           my $a=shift;
           my $b=shift;
           return $a + $b;
    };
    
    
    sub fun1 {
           $self=shift;
           my $a=shift;
           my $b=shift;
           return $a / $b;
    }
    1;
    
    
    [root@wx03 test]# cat t10.pl 
    unshift(@INC,"/root/test"); 
    use Horse;;
    $ua=Horse->new();
    #print "It's an object
    " if UNIVERSAL::isa($ua, 'UNIVERSAL');
    $code=Horse->sum1(4,5);
    
    print "$str is $code
    ";
    
    $code=Horse->sum2(4,5);
    print "$str is $code
    ";
    [root@wx03 test]# perl t10.pl 
    $str is 16
    $str is 9
    
    
    
    使用use base 代替:
    
    
    
    [root@wx03 test]# cat Horse.pm 
    package Horse;
    use base qw(Critter);
    sub new {
    my $invocant = shift;
    my $class = ref($invocant) || $invocant;
    my $self = {
    color => "bay",
    legs => 4,
    owner => undef,
    @_, # 覆盖以前的属性
    };
    return bless $self, $class;
    #return  $self;
    };
    sub sum1 {
           $self=shift;
           my $a=shift;
           my $b=shift;
           return $a + $b + 7;
    };
    
    our @arr=qw/1 2 3 4 5 6 7/;
    our %h1=(1,2,3,4,5,6,7,8);
    1;
    
    
    [root@wx03 test]# cat t10.pl 
    unshift(@INC,"/root/test"); 
    use Horse;;
    $ua=Horse->new();
    #print "It's an object
    " if UNIVERSAL::isa($ua, 'UNIVERSAL');
    $code=Horse->sum1(4,5);
    
    print "$str is $code
    ";
    
    $code=Horse->sum2(4,5);
    print "$str is $code
    ";
    [root@wx03 test]# perl t10.pl 
    $str is 16
    $str is 9
    
    
    

  • 相关阅读:
    第一讲 jQuery入门
    Log4j日志记录
    第四讲 Hibernate 缓存管理
    第一讲 Hibernate 简介
    第三讲 Spring 持久层封装、事务控制
    对 PInvoke 函数的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标
    善用 C# 3.0 Extensions 方法
    .net 下如何将文档文件(Word, Pdf等) 中的文本提取出来(转)
    vs2010常用快捷键 (转)
    Silverlight 视频学习札记(一)
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6200025.html
Copyright © 2011-2022 走看看