0
我遇到Map
s的奇怪問題。這裏有一個小例子來重現問題:Map.get無法使用字符串鍵檢索值
defmodule Document do
@expiration_presets_to_timeshift %{
"immediately": [seconds: 1],
"1-minute": [minutes: 1],
"1-hour": [hours: 1],
"1-day": [days: 1],
"1-week": [weeks: 1],
"1-month": [months: 1],
"1-year": [years: 1],
"never": [years: 9999],
}
def expiration_presets, do: @expiration_presets_to_timeshift
end
如果我們再嘗試檢索從地圖信息:
iex(1)> import Document
Document
iex(2)> Document.expiration_presets
%{"1-day": [days: 1], "1-hour": [hours: 1], "1-minute": [minutes: 1],
"1-month": [months: 1], "1-week": [weeks: 1], "1-year": [years: 1],
immediately: [seconds: 1], never: [years: 9999]}
iex(3)> Document.expiration_presets["1-hour"]
nil
iex(4)> Map.get(Document.expiration_presets, "1-hour")
nil
我發現兩個奇怪的行爲:
- 的「立即」和「從不」鍵已經成爲原子。我從來沒有要求過這個。爲什麼?
- 我似乎無法使用密鑰字符串檢索值(
Map.get/2
和Map.[key]
均返回nil
)。爲什麼會這樣,我如何從地圖中檢索出值?
謝謝!我沒有注意到'key => value'與'atom:value'的關鍵區別! – achedeuzot