没评论
分类: Python/Ruby
2012-05-25 14:03:31
sub subroutine { #定义名为subroutine的子程序
…
}
调用子程序:&subroutine
每个子程序都有返回值。子程序中最后一次的运算结果会被自动当成子程序的返回值。如果子程序最后执行的表达式是print语句,它的返回值通常为“1”,代表“输出成功”。
参数
可以把参数传递到子程序里,用法:&subroutine(参数1,参数2,…)。
Perl会把这些参数存储到特殊的数组变量@_,在子程序里可以用$_[0],$_[1]等来调用。@_是子程序的私有变量,假如已经有了全局变量@_,则该变量在子程序调用前会被先存起来,并在子程序结束时恢复原本的值。
子程序中的私有变量只在该语句块中起作用,并且与其它全局的同名变量不冲突。用法如下:
sub max{
my($m,$n) = @_; #在子程序里定义私有变量$m和$n,并把参数@_赋值给它们
…
}
关于my私有变量
my变量可以用在任何的程序块中来限制其作用域范围。my操作符并不会更改变量赋值时的上下文:
my($num) = @_; #列表上下文,把数组@_的第一个元素赋值给列表($num)
my $num = @_; #标量上下文,把数组@_元素个数赋值给标量$num
my在不使用括号时,只用来声明单个变量,如my $fred,$barney; #只声明$fred
return操作符的作用:立即返回某个值,而不要执行子程序的其余部分。
持久性私有变量state
在子程序中用state声明变量的作用:在子程序多次调用期间保留变量的值,并将变量的作用域局限于子程序中。