作者oktryit (:))
标题[转录][课後补充] reference
时间Sat Aug 14 15:11:20 2004
:: ------------------
:: 文章,如要看
:: 请待我询问作者意见
:: 再行转录 ....(也就是我的老师啦 ^^)
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)