Re: [問題] array reference

看板Perl作者 (System hacked)時間13年前 (2012/04/24 13:03), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串4/5 (看更多)
※ 引述《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
忘了有slice這回事,謝謝提醒
04/25 03:25, 1F

04/26 12:07, , 2F
我還真不知道orz 去確認了一次版本
04/26 12:07, 2F
文章代碼(AID): #1FbZGim7 (Perl)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 5 篇):
文章代碼(AID): #1FbZGim7 (Perl)