繁体   English   中英

Elixir map 返回零

[英]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

当我运行它时,我得到一个 nil 值列表。

encode('ABCD') # [nil, nil, nil, nil]

我究竟做错了什么?

'A'是一个列表本身,包含一个字符。

is_list('A')
#⇒ true
'A' ++ 'B' ++ 'C' ++ 'D'
#⇒ 'ABCD'

作为 map 键,您需要的是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']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM