2
A
回答
5
正常Hash
強制將其所有的關鍵字符串:
my %a = '1' => 'foo', 2 => 'bar';
say %a.pairs.perl; # ("1" => "foo", "2" => "bar").Seq
注意的第二個關鍵是如何成爲字符串"2"
,即使它最初被傳遞給哈希作爲一個整數。
當你做哈希查找窗口,下標也將自動在使用前會轉換爲字符串:
say %a{"2"}.perl; # "bar"
say %a{2}.perl; # "bar"
注意如何標2
找到正確的元素與關鍵"2"
。
從整數到字符串的轉換在Perl 6中定義良好,每個唯一整數產生一個唯一的字符串,所以你給出的例子很好。
如果不希望自己的哈希鍵轉換爲字符串,則可以使用在聲明中{}
符號覆蓋鍵操作:
my %b{Any} = '1' => 'foo', 2 => 'bar';
say %b.pairs.perl; # ("1" => "foo", 2 => "bar").Seq
say %b{"1"}.perl; # "foo"
say %b{1}.perl; # Any
say %b{"2"}.perl; # Any
say %b{2}.perl; # "bar"
注意如何在這種情況下,第二個鍵2
保持一個整數,並且使用字符串下標"2"
進行查找時找不到它,下標1
也找不到鍵"1"
的條目。
%b{Any}
表示「接受任何類型的鑰匙,不要強迫他們」。這有時稱爲'object Hash',因爲它可以從任何對象映射到值。
%b{Int}
意味着「只接受Int
鍵,並且不強制它們」。在這種情況下,如果您甚至嘗試使用任何不是Int
的東西,就會得到一個錯誤。
相關問題
- 1. 使用整數作爲散列鍵
- 2. 使用Ruby散列鍵作爲參數
- 3. 使用數組作爲散列圖鍵
- 4. 使用整數作爲鍵的散列表
- 5. 是否有最大數量的「安全」數據來散列?
- 6. 使用符號作爲散列鍵
- 7. 使用散列作爲主鍵?
- 8. 使用class作爲散列鍵?
- 9. 使用日期作爲散列表鍵
- 10. 安全使用md5散列作爲註冊字符串標記?
- 11. reinterpret_cast整數浮動是否安全?
- 12. 配對作爲散列鍵
- 13. 當我在同一個散列上循環時,在Perl中安全地從散列引用中刪除一個鍵是否安全?爲什麼?
- 14. SHA1在PBKDF2中作爲散列函數仍然安全嗎?
- 15. ClojureScript漂浮散列作爲整數
- 16. 散列字符數組作爲鍵
- 17. 是否可以將SHA 256位散列作爲整數存儲在BIGINT列中?
- 18. 使用對象散列代碼作爲內存緩存鍵是否有意義?
- 19. 作爲散列表的散列函數是否足夠好作爲散列表C
- 20. 傳遞散列鍵作爲參數打印出散列值
- 21. 這是足夠安全的,對散列
- 22. 使用TitanDB是否「安全」?
- 23. ScheduledThreadPoolExecutor.remove:是否安全使用
- 24. 使用os.environ.setdefault是否安全?
- 25. 使用多個對象作爲鍵的散列/關聯數組
- 26. 使用數組作爲鍵並生成值來生成散列
- 27. 在Ruby中使用數組作爲散列鍵
- 28. 訂單號的安全整數散列法
- 29. PHP函數error_log()是否安全使用?
- 30. 如果我散列IV值,是否有任何安全改進?