[轉錄] reference (轉錄文章)
:: ------------------
:: 文章,如要看
:: 請待我詢問作者意見
:: 再行轉錄 ....(也就是我的老師啦 ^^)
telnet://bbs.math.ncu.edu.tw --> (C)lass --> 3 Math/
--> 3 Course/ --> 10 Math_Perl
*** 轉錄於 中大數學系 吳維漢 教授的文章 ***
作者: weihan (天天天藍) 站內: Math_Perl
標題: reference
時間: Fri May 28 20:01:04 2004
reference (參考) 是以間接的方式來讀取/修改另一個變數的資料
(1) scalar reference
$a = "abc" ;
$b = \$a ; # 定義 $b 為 $a 的一個 scalar reference
以上 $a 之前要加上 '\' 符號
這樣就可以透過 $b 來間接地讀取或者改變 $a 的數值
print "$$b" ; # 相當於 print "$a"
$$b = "def" ; # 相當於 $a = "def"
因此 scalar 之前加上 '\' 就變成為 reference
referece 之前加上 '$' 就回復為 scalar
(2) array reference
同樣的方式也可以適用於 array
@a = ( 3 , 2 , 7 ) ;
$b = \@a ; # 定義 $b 為 @a 的一個 array reference
print "@$b\n" ; # 相當於 print "@a\n"
@$b = 1 .. 4 ; # 相當於 @a = 1 .. 4
因此 array 之前加上 '\' 就變成為 reference
reference 之前加上 '@' 就回復為 array
如果要利用 array reference 來讀取陣列內的單一元素, 可用
$$b[1] = 9 ; # 相當於 $a[1] = 9
以上也可以寫成
${$b}[1] = 9 ;
或者是
$b->[1] = 9 ; # 這種方式比較方便觀看
讀到這裡 你應該會有個疑問 為何我要閒著無聊將陣列改用這種方式來寫
這個問題要等到撰寫函式時就會非常清楚 在此先將 reference 的語法先
弄清楚
(3) hash reference
同樣的若使用在 hash 則為
%a = ( Tom => 13 , John => 18 , Mary => 22 ) ;
$b = \%a ;
因此
%$b 就相當於 %a
$$b{Tom} 就相當於 $a{Tom}
$$b{Tom} 也可以寫成 ${$b}{Tom} 或者是 $b->{Tom}
因此若要透過 reference 將 hash 印出來則為
for ( keys %$b ) {
print "$_ : $b->{$_} \n" ;
}
--
===================================================================
* 人生的意義 : 盡責任 負責任 *
* 人生的目的 : 受報 還願 行善 *
* 人生的價值 : 奉獻 付出 *
================================================== 聖嚴法師 語 ===
--
※發信站 [中央數學 織夢天堂 bbs.math.ncu.edu.tw]
‧FROM [ziyou2.math.ncu.edu.tw]
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.207.58
※ 編輯: oktryit 來自: 140.115.207.58 (08/14 15:14)
※ 編輯: oktryit 來自: 140.115.207.58 (08/14 15:19)
Perl 近期熱門文章
PTT數位生活區 即時熱門文章