Java完成軟件運轉時啟動信息窗口的辦法。本站提示廣大學習愛好者:(Java完成軟件運轉時啟動信息窗口的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java完成軟件運轉時啟動信息窗口的辦法正文
在Perl中有一些專門用於處置列表數據的模塊,好比說List::Util模塊,該模塊包括在尺度庫中,能供給各類高效的罕見列表處置對象。因其用C說話來完成,速度普通都挺快!
【例01】掃描相符前提的某個列表,並掏出第一個相符前提的
慣例做法:
use 5.010;
my @names = qw(Wendy Jerry Betty Wendy Alice);
foreach (@names) {
if (/\bWendy\b/i) {
$match = $_;
last;
}
}
say $match;
假如改用List::Util模塊供給的first子法式,就要簡略的多
use List::Util qw(first);
my $match = first {/\bWendy\b/i} @names; #找到第一個Wendy即終止
假如換成數字的話,好比請求
【例02】求1到1000之間的和
慣例做法:
use 5.010;
my $total = 0;
foreach (1..1000) {
$total += $_;
}
say $total; #成果500500
假如改用List::Util模塊供給的sum子法式,異樣很簡略:
use List::Util qw(sum);
my $total = sum(1..1000); #成果500500
【例03】求一組數字的最年夜值與最小值.
慣例做法:
#! /usr/bin/perl;
use utf8;
sub max {
my($max_so_far) = shift @_; #數組中第一個值,臨時當做最年夜值。
foreach(@_){ #遍歷數組@_
if($_>$max_so_far){ #看其它元素能否有比$max_so_far年夜的值。
$max_so_far = $_;} #假如有話,更新最年夜值變量
}
$max_so_far;
}
my $_MaxData = &max(2,3,8,5,10);
print $_MaxData; #成果為10
假如改用List::Util模塊供給的max子法式,則異常簡略:
use List::Util qw(max);
my $max = max(2, 3, 8, 5, 10);
print $max; #成果為10
異樣事理,應用List::Util模塊供給的min子法式,可求最小值:
use List::Util qw(min);
my $min = min(2, 3, 8, 5, 10); #最小值為2
【例04】對一組字符串停止排序
假如用慣例辦法的話,必需按次序一個個停止比擬,用List::Util的maxstr子法式可以輕松完成:
use List::Util qw(maxstr);
my $max_str = maxstr( qw/Jerry Betty Alice Fred Barney jerry/ );
print $max_str;
【例05】對列表中的元素隨機排序
假如用慣例辦法的話,很難完成,而用List::Util中的shuffle子法式,則異常簡略,一條敕令弄定!
use List::Util qw(shuffle);
my @shuffled_nums = shuffle(1..10); # 3 9 8 5 6 4 1 10 2 7
my @shuffled_name = shuffle('A'..'G');# F E G A B D
【例06】檢討列表中能否沒有某個元素,或許有任何元素,或許一切元素都相符前提。支撐相似grep語法
假如用慣例辦法的話,很難完成,而用List::MoreUtils異樣很輕易完成,代碼以下:
use List::MoreUtils qw(none any all);
my @numbers = qw(7 4 1 3 78);
if (none {$_ > 100} @numbers) {print "No elements over 100\n"; }
elsif (any {$_ > 50}@numbers) {print "Some elements over 50\n";}
elsif (all {$_ <10} @numbers) {print "All elements < 10\n";}
NOTE: List::MoreUtils非自帶的模塊,須要下載.
【例07】同時處置多個姓名列表,每次掏出2位
use List::MoreUtils qw(natatime);
my @names_1 = qw(Alice Bob Carly);
my @names_2 = qw(David Edward Foo);
my $names = natatime(2, @names_1, @names_2); #natatim (N at a time:同時處置N組)有多個列表的話往外面放就行了
while (my @name = $names->()) { #遍歷,便利前面輸入
print "Got @name\n";
}
#輸入成果
Got Alice Bob
Got Carly David
Got Edward Foo
【例08】歸並多個列表為一個列表
use List::MoreUtils qw(mesh);
my @array_1 = 'A' .. 'D';
my @array_2 = 1 .. 4;
my @array_3 = qw( jerry alice wendy );
my @array_new = mesh(@array_1, @array_2, @array_3);
print @array_new;
#輸入成果:
A=>1=>jerry=> B=>2=>alice=> C=>3=>wendy=> D=>4
第1次: 第一個列表中取A,第二個列表中掏出1,第三個列表中掏出jerry
第2次: 第一個列表中取B, 第二個列表中掏出2,第三個列表中掏出alice
......
順次類推!
【例09】往指定的字符串中加字符
可以用List::MoreUtils中的insert_after子法式
use v5.10;
use List::MoreUtils qw(:all);
my @list = qw/This is a list/;
insert_after {$_ eq 'a'} "longer" => @list;
print @list; #This is a longer list
【例10】對兩個列表停止操作,第一個列表平方後,和第二個列表乞降
可以用List::MoreUtils中的pairwise子法式
use v5.10;
use List::MoreUtils qw(:all);
@m = (1..4);
@n = (100..103);
@x = pairwise { ($a*$a) + $b } @m, @n; #101 105 111 119
【總結】
假如下面的方法用通俗的辦法完成,須要屢次輪回遍歷,很費事,而將龐雜的算法,數據構造用C來完成並封裝在List模塊中,則可以完成許多看似龐雜的功效,從中也能夠看出Perl的壯大的地方在於CPAN,有浩瀚的模塊支持!
還有甚麼$first = shift; $second = shift; 將@_中的第一個元素付給$first,第二個元素付給$second。
Perl 中的特別變量 $&, $`,$' 用在形式婚配中
$& 用來寄存婚配中的值
$` 用來寄存婚配中之前一切字符
$' 用來寄存婚配中以後一切字符
如:
#!/usr/bin/perl -w
if("Hello good there,neigbor hello" =~ /\S\w+,/){
print "That actually matched '$&'. ";
print $`." ";
print $'." ";
}
履行的成果為:
That actually matched 'there,'.
Hello good
neigbor hello
---------------------------
別的經常使用的變量@_
@_ 是子法式的一個公有變量;假如有一個全局變量@_,它將在此子法式挪用前存儲起來,當子法式挪用完成後,其晚期的值會被從新賦還給@_。這意味著當將參數傳遞給子法式時不消擔憂它會影響此法式中其它子法式的@_這個變量的值。嵌套的子法式挪用時,@_的值和上述相似。乃至此子法式遞歸挪用時,每次挪用將獲得新的@_,是以子法式挪用時將獲得其本身的參數列表。
除非挪用的子法式前有&爾後面沒有括號(或許沒有參數),此時@_從此挪用者的高低文(context)獲得。這平日不是個好主張,但有時很有效。
6、翻開管道
用法式的情勢也能夠象敕令行一樣翻開和應用管道(ex:ls>tempfile)。如語句open (MYPIPE, "| cat >hello"); 翻開一個管道,發送到MYPIPE的輸入成為敕令"cat >hello"的輸出。因為cat敕令將顯示輸出文件的內容,故該語句等價於open(MYPIPE, ">hello"); 用管道發送郵件以下:
open (MESSAGE, "| mail dave");
print MESSAGE ("Hi, Dave! Your Perl program sent this!\n");
close (MESSAGE);