Perl支持動態范圍聲明,動態范圍也擴展到最里面的閉包塊,但是這里的“閉包”是在運行時動態定義的,今天武林技術頻道小編和大家分享perl之范圍聲明our-my-local的簡介。
老實說,這個東西有點折騰人,主要是書上的表述很晦澀,其實搞懂不難。
?
our,"把名字限于某個范圍“,其實就是明確聲明一個"全局變量",雖然是在某個模塊或者函數里面定義的,外面的也可以訪問,如果已經聲明過了,再次用"our",表示此處用的是全局的那個,不是同名的私有或者局部變量
my ,"把名字和值都限于限于某個范圍",簡單說,就是只能本層模塊或者函數可以看到這個變量,高一層的或者低一層的都看不到的。
?
?
運行結果:
?
?
一個 How are you do? 都沒有,在greeting1中call greeting2時,greeting2看不到greeting1的私有$hello變量,只能看到外面的全局變量$hello
?
local,"把值局限于某個范圍",也有叫"動態詞法范圍",有點不好懂。我的理解,就是本層和本層下層的函數可以看到本層的變量,但是本層上一層的不可以。到底范圍是多少,不僅取決于本層的函數,還要看下一層的程序長度和深度,所以叫"動態范圍"。
?
?
?
sub greeting2{
??? print "$hello/n";
}
$hello = "How are you doing?";
greeting2();
greeting1();
greeting2();
運行結果:
?
?
跟用 my 時不一樣了吧? 此時在greeting1調用greeting2時,greeting2可以看到greeting1的局部變量$hello,外部的全局變量當然就隱藏了。
以上就是perl之范圍聲明our-my-local的簡介,隨著IT行業的高速發展,目前編程人員的需求不斷增大,可以說是很有前景的一個專業。
新聞熱點
疑難解答
圖片精選