zoukankan      html  css  js  c++  java
  • perl 函数

    文档

    函数参数

    sub hello{
    	$len = @args = @_;
      print "hello @args
    ";
    }
    
    hello('ajanuw', 'alone'); # hello ajanuw alone
    

    传递hash参数

    sub hello{
    	my (%args) = @_;
    	foreach my $k (keys %args) {
    		my $v = $args{$k};
    		print "$k: $v
    ";
    	}
    }
    
    %user = (name => 'ajanuw', age => 14);
    hello(%user);
    

    return

    如果没有使用 return 语句,则子程序的最后一行语句将作为返回值

    sub add{
    	return @_[0] + @_[1];
    }
    
    print add(1,2)."
    "; # 3
    

    静态变量

    这个在js只能用闭包实现

    #!/usr/bin/perl
    use feature 'state';
    
    sub add{
    	my $num = @_[0];
      state $i = 0;
    	$i += $num;
    	return $i;
    }
    
    add(1);
    add(4);
    
    print add()."
    "; # 5
    

    析构返回值

    sub add{
        qw/ajanuw alone/
    }
    my ($a, $b) = add();
    print "$a and $b
    "; # ajanuw and alone
    

    递归

    #!/usr/bin/perl
    
    sub echo{
        my $n = @_[0];
        if($n eq 0){
            return 'done.';
        }
        print "$n
    ";
        return echo($n-1);
    }
    echo(3);
    

    回调

    #!/usr/bin/perl
    use autodie;
    
    sub asd{
        my ($n, $cb) = @_;
        &$cb($n +1);
    }
    
    asd(123, sub {
        print "@_
    ";
    })
    

    闭包

    sub asd{
        my $n = shift @_;
        return sub {
            $n += shift @_;
            print "$n
    ";
        }
    }
    
    $x = asd(1);
    &$x(2);
    &$x(3);
    
  • 相关阅读:
    Composer autoload 自动加载
    权限问题
    加载适配器和布局之间的顺序关系--Unsolved
    listview和button
    线程练习中出现的错误
    线程02
    关于初始化成员变量
    可扩展列表
    Android开发中Handler的经典总结----转载
    线程01
  • 原文地址:https://www.cnblogs.com/ajanuw/p/9260370.html
Copyright © 2011-2022 走看看