Tie :: IxHash會生成一個對象,該對象具有作爲數組和哈希的大部分行爲集。但我找不到相當於返回(鍵,值)對的each
函數。Perl Tie :: IxHash - 是否有'each'方法?
我剛剛忽略了它嗎?
如果我要推出自己的,我還以爲像這樣的工作:
use Tie::IxHash;
$t = Tie::IxHash->new(a,1,b,2,c,3);
while (($x1, $x2) = map { $_ => $t->Values($_) } $t->Keys) { say "$x1 => $x2"; }
但輸出是一個無窮級數的
a => 1
...原因這對我來說還不清楚。
任何人都可以建議如何實現each
並列散列?
回覆:「但輸出是一個無限系列'a => 1'」:這是因爲'map {$ _ => $ t-> Values($ _)} $ t-> Keys'總是評估列表'(a,1,b,2,c,3)'。您的任務將'$ x1'和'$ x2'設置爲該列表的前兩個元素,並放棄其餘部分。 ('each'「記得」你在哪裏散列,但你的'while''循環沒有這樣的東西,每次迭代都會檢索整個列表並丟棄除開頭之外的所有列表。) – ruakh 2013-02-15 00:11:59
是的,我現在看到,有仔細閱讀'each' doc。它看起來像我可以擊敗我的頭來試圖編寫一個維持一個持久化迭代器的函數,或者直接在'$ t-> Keys'上編寫一個'foreach'循環並檢索'$ t-> Values($鍵)'。 – Chap 2013-02-15 00:25:20