|
返回操作将立刻的从子程序中返回一个值:
my@names = qw /fred barney betty dinoWilma pebbles bam-bamm/;
my $result = &which_element_is(“dino”, @names);
sub which_element_is{
my($what, @array) = @_;
foreach(0..$#array){ #@array 元素的索引
if($waht eq $array[$_]){
return $_; #找到既返回
}
}
-1; #没有找到元素(此处是可选的)
}
这个子程序是寻找@names 中“dino”的索引值。首先,定义了2 个参数:$what, 查找的对象;@array,被搜索的数组。本
例中为@names 的一份拷贝。foreach 循环遍历数组@array(第一个索引值为0,最后一个为$#array,第三章中有介绍)。
每一次循环时,将检测数组@array 当前的元素的是否为$what 中的元素◆。如果相同,则返回此时的索引值。从当前代码
返回的最常用方法是使用return 语句,它将立刻返回,而不会执行其余的代码。
◆注意此时的比较符为,eq,而非= =。
如果不存在所要查找的元素呢?在本例中,子程序返回-1,表明“值不存在”。如果想更加Perlish,那可以返回undef,但
本例中,程序员选择了-1。上例中使用return -1 也是正确的,但return 是多余的。
某些程序员喜欢每次都使用return 语句,表明其为返回值。例如,你可能想从子程序中立刻返回(非最后一行)而使用return,
如本章前面的&larger_of_fred_or_barney 这个例子。这并非是必须的,但也没什么坏的影响。对大多数Perl 程序员来讲,这
仅是多输入七个字母而已。 |
|