Re: [問題] array reference
※ 引述《cutecpu (可愛中央處理器)》之銘言:
: 想請問為什麼:
: #!/usr/bin/perl -w
: @arr = (1,2,3);
: print @arr[2];
print $arr[2];
: 會出現:「Scalar value @arr[2] better written as $arr[2] at ./g.pl line 5.」
: 而以下 code 卻不會
: #!/usr/bin/perl -w
: @arr = (1,2,3);
: $ref = \@arr;
: print @$ref[2]; # 我一直以為要寫成 ${$ref}[2] or $$ref[2] 才是對的
print $ref->[2];
: 謝謝^_^
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 210.59.164.109
: → xatier:想一下 @arr[2] 是什麼XD 為什麼要前綴 @ 記號 04/23 21:10
: → firegsh:@arr[2]沒這寫法吧. 04/24 01:18
當然有 @arr[2] 這種寫法啦,這在 perldata(1) 裡面有提到,叫做 slice。
取自 manpage 的範例:
@days # ($days[0], $days[1],... $days[n])
@days[3,4,5] # same as ($days[3],$days[4],$days[5])
@days{'a','c'} # same as ($days{'a'},$days{'c'})
print @arr[2] 傳回只有一個元素的 array,所以 print 出來的時候沒差,只是
剛好觸發 warnings (-w)。
而改用 reference 是因為 warnings 沒判斷這種用法,沒給出警告訊息。
其實你要的是 $arr[2] 或是 $ref->[2]。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.242.135.97
※ 編輯: DarkKiller 來自: 210.242.135.97 (04/24 13:08)
推
04/25 03:25, , 1F
04/25 03:25, 1F
推
04/26 12:07, , 2F
04/26 12:07, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 5 篇):
Perl 近期熱門文章
PTT數位生活區 即時熱門文章