perl範圍宣告our,my,local

2021-04-30 16:45:53 字數 1151 閱讀 6771

老實說,這個東西有點折騰人,主要是書上的表述很晦澀,其實搞懂不難。

our,"把名字限於某個範圍「,其實就是明確宣告乙個"全域性變數",雖然是在某個模組或者函式裡面定義的,外面的也可以訪問,如果已經宣告過了,再次用"our",表示此處用的是全域性的那個,不是同名的私有或者區域性變數

our $program_name = "waiter";

# 這裡執行的**看到的仍然是"server".

my ,"把名字和值都限於限於某個範圍",簡單說,就是只能本層模組或者函式可以看到這個變數,高一層的或者低一層的都看不到的。

sub greeting1

sub greeting2

$hello = "how are you doing?";

greeting2();

greeting1();

greeting2();

執行結果:

how are you doing?

how are you doing?

how are you doing?

--------------------------

乙個 how are you do? 都沒有,在greeting1中call greeting2時,greeting2看不到greeting1的私有 $hello變數,只能看到外面的全域性變數$hello

local,"把值侷限於某個範圍",也有叫"動態詞法範圍",有點不好懂。我的理解,就是本層和本層下層的函式可以看到本層的變數,但是本層上一層的不可以。到底範圍是多少,不僅取決於本層的函式,還要看下一層的程式長度和深度,所以叫"動態範圍"。

sub greeting1

sub greeting2

$hello = "how are you doing?";

greeting2();

greeting1();

greeting2();

執行結果:

how are you doing?

how are you do?

how are you doing?

-----------------------

跟用 my 時不一樣了吧? 此時在greeting1呼叫greeting2時,greeting2可以看到greeting1的區域性變數$hello,外部的全域性變數當然就隱藏了。

perl範圍宣告our,my,local

老實說,這個東西有點折騰人,主要是書上的表述很晦澀,其實搞懂不難。our,把名字限於某個範圍 其實就是明確宣告乙個 全域性變數 雖然是在某個模組或者函式裡面定義的,外面的也可以訪問,如果已經宣告過了,再次用 our 表示此處用的是全域性的那個,不是同名的私有或者區域性變數 our program n...

perl中的範圍宣告our my

老實說,這個東西有點折騰人,主要是書上的表述很晦澀,其實搞懂不難。our,把名字限於某個範圍 其實就是明確宣告乙個 全域性變數 雖然是在某個模組或者函式裡面定義的,外面的也可以訪問,如果已經宣告過了,再次用 our 表示此處用的是全域性的那個,不是同名的私有或者區域性變數 複製 如下 our pro...

中宣告變數的範圍

c 0 x現在被稱為c 11 因為它不是過去十年完成 它終於被批准。我打算繞過新增一些關於它的教程,但我想做一些可能更直接的stl以來首次適用於大多數人。編譯器支援c 11而參差不齊 見 init statement expr1 expr2 宣告 迴圈考慮最簡單的方法是將其轉換成等價的while迴圈...