主頁 > 知識庫 > perl中的范圍聲明our-my-local介紹

perl中的范圍聲明our-my-local介紹

熱門標(biāo)簽:熱門電銷機(jī)器人 外呼電信系統(tǒng) 智能機(jī)器人電銷神器 河南虛擬外呼系統(tǒng)公司 萬利達(dá)百貨商場地圖標(biāo)注 惠州龍門400電話要怎么申請 okcc外呼系統(tǒng)怎么調(diào)速度 電話機(jī)器人哪里有賣 上海企業(yè)外呼系統(tǒng)

老實(shí)說,這個東西有點(diǎn)折騰人,主要是書上的表述很晦澀,其實(shí)搞懂不難。
 
our,"把名字限于某個范圍“,其實(shí)就是明確聲明一個"全局變量",雖然是在某個模塊或者函數(shù)里面定義的,外面的也可以訪問,如果已經(jīng)聲明過了,再次用"our",表示此處用的是全局的那個,不是同名的私有或者局部變量

復(fù)制代碼 代碼如下:

our $PROGRAM_NAME = "waiter";
{
my  $PROGRAM_NAME = "something";
our $PROGRAM_NAME = "server"; #這里的our和外面的相同,和前句不同。
# 這里調(diào)用的代碼看到的是"server"
}
# 這里執(zhí)行的代碼看到的仍然是"server".

my ,"把名字和值都限于限于某個范圍",簡單說,就是只能本層模塊或者函數(shù)可以看到這個變量,高一層的或者低一層的都看不到的。
復(fù)制代碼 代碼如下:

sub greeting1{
    my ($hello) = "How are you do?";
    greeting2();
}
 
sub greeting2{
    print "$hello\n";
}
$hello = "How are you doing?";
greeting2();
greeting1();
greeting2();

運(yùn)行結(jié)果:
復(fù)制代碼 代碼如下:

How are you doing?
How are you doing?
How are you doing?

一個 How are you do? 都沒有,在greeting1中call greeting2時,greeting2看不到greeting1的私有$hello變量,只能看到外面的全局變量$hello
 
local,"把值局限于某個范圍",也有叫"動態(tài)詞法范圍",有點(diǎn)不好懂。我的理解,就是本層和本層下層的函數(shù)可以看到本層的變量,但是本層上一層的不可以。到底范圍是多少,不僅取決于本層的函數(shù),還要看下一層的程序長度和深度,所以叫"動態(tài)范圍"。
復(fù)制代碼 代碼如下:

sub greeting1{
    local ($hello) = "How are you do?";
    greeting2();
}

sub greeting2{
    print "$hello\n";
}
$hello = "How are you doing?";
greeting2();
greeting1();
greeting2();


運(yùn)行結(jié)果:
復(fù)制代碼 代碼如下:

How are you doing?
How are you do?
How are you doing?

跟用 my 時不一樣了吧? 此時在greeting1調(diào)用greeting2時,greeting2可以看到greeting1的局部變量$hello,外部的全局變量當(dāng)然就隱藏了。

標(biāo)簽:周口 綿陽 淮安 百色 秦皇島 合肥 周口 綏化

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《perl中的范圍聲明our-my-local介紹》,本文關(guān)鍵詞  perl,中的,范圍,聲明,our-my-local,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《perl中的范圍聲明our-my-local介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于perl中的范圍聲明our-my-local介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章