Elixir 地图 returns 无
Elixir map returns nil
我想对给定的字符列表执行简单映射
def encode(str) do
map = %{
'A' => '1',
'B' => '2',
'C' => '3',
'D' => '4'
}
Enum.map(str, fn char -> map[char] end)
end
当我 运行 这样做时,我得到一个空值列表。
encode('ABCD') # [nil, nil, nil, nil]
我做错了什么?
'A'
本身就是一个列表,包含一个字符。
is_list('A')
#⇒ true
'A' ++ 'B' ++ 'C' ++ 'D'
#⇒ 'ABCD'
作为映射键,您需要的是 chars,而不是 lists。
map = %{
?A => '1',
?B => '2',
?C => '3',
?D => '4'
}
Enum.map('ABCD', fn char -> map[char] end)
# or Enum.map('ABCD', &map[&1])
#⇒ ['1', '2', '3', '4']
我想对给定的字符列表执行简单映射
def encode(str) do
map = %{
'A' => '1',
'B' => '2',
'C' => '3',
'D' => '4'
}
Enum.map(str, fn char -> map[char] end)
end
当我 运行 这样做时,我得到一个空值列表。
encode('ABCD') # [nil, nil, nil, nil]
我做错了什么?
'A'
本身就是一个列表,包含一个字符。
is_list('A')
#⇒ true
'A' ++ 'B' ++ 'C' ++ 'D'
#⇒ 'ABCD'
作为映射键,您需要的是 chars,而不是 lists。
map = %{
?A => '1',
?B => '2',
?C => '3',
?D => '4'
}
Enum.map('ABCD', fn char -> map[char] end)
# or Enum.map('ABCD', &map[&1])
#⇒ ['1', '2', '3', '4']