我想知道Perl中的foreach語句是否按照一致的順序迭代數組中的項目?也就是說,如果我在同一個數組或列表中多次使用foreach,會得到不同的結果嗎?foreach語句是按順序迭代還是隨機順序?
5
A
回答
9
是的,foreach
語句中的項目按順序迭代。
你提的問題從混亂可能出現在迭代一個哈希的元素:
my %hash = ('a' => 1, 'b' => 2, 'c' => 3);
foreach my $key (keys %hash) { print $key } ; # output is "cab"
但在這看似隨機的順序是怎樣的數據都存儲在一個Perl哈希表(數據在一個Perl哈希神器表不是有序的)。這是keys
聲明是「改變」散列表的順序,而不是foreach
。
1
如果您在兩次之間沒有更改列表,它將會保持一致的順序。
0
爲什麼Perl的foreach循環哈希排序是看似隨意的理由是perlsec文件,鏈接here
相關問題
- 1. 一級鍵是按排序順序存儲,還是按SQL語句排序?
- 2. 是否保證在PHP中按照數組順序迭代foreach?
- 3. MySQL的順序是(不需要)隨機順序
- 4. 半隨機順序
- 5. jQuery的.each()方法是並行還是按順序運行它的語句?
- 6. NSSet的迭代順序是什麼?
- 7. flake8:import語句是錯誤的順序
- 8. SQL隨機並按順序複製?
- 9. ASP.net按順序隨機排列
- 10. 按順序迭代設置Play框架
- 11. 如何按特定順序迭代?
- 12. 隨機顯示會員,而不是按字母順序
- 13. xtext:按不同順序的語句
- 14. 行的隨機順序Matlab
- 15. 如何以隨機順序
- 16. Laravel:獲取隨機順序
- 17. 獲取隨機順序Laravel
- 18. 隨機化行的順序
- 19. Python的隨機順序OrderedDict
- 20. std :: set迭代順序是否總是按照C++規範升序?
- 21. Javascript代碼不是按順序運行
- 22. 切片迭代順序在
- 23. 迭代非順序列
- 24. 迭代python列表:迭代順序
- 25. 散列值的散列值按遞減順序還是遞增順序鍵值?
- 26. JavaScript語句執行順序
- 27. if語句的順序?
- 28. .NET foreach語句是否保證以與構建集合相同的順序迭代集合?
- 29. mysql按順序隨機()和按價值排序 - 可能嗎?
- 30. 是按位還是保證評估順序?
只要是迂腐,'keys'不改變哈希表的順序 - 如果你調用'鍵'不必插入或刪除任何密鑰就可以在同一個散列上重複,每次都會以相同的順序返回密鑰。首先將數據存儲在散列中的行爲正在改變順序。哈希將數據按確定性的順序存儲,但不可預知(爲了實際目的,使其無序)。 – 2010-05-01 10:40:16
只需將鏈接添加到相關問題:[Perl是否保證返回一致排序的散列鍵? [Stack Overflow](http://stackoverflow.com/questions/1256502/is-perl-guaranteed-to-return-consistently-ordered-hash-keys) – sdaau 2012-10-31 09:21:33