Elixir语法错误:创建地图时出现无效的令牌错误

时间:2020-05-28 20:08:22

标签: elixir

当我尝试使用%{}语法创建Map时,Elixir报告语法错误,但失败。 map = %{foo: "bar", hello: "world"}不起作用。 map = %{:a => 1, 2 => :b}(直接从本教程中获取)无效。

此问题在交互式环境中发生:

Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:2:2] [async-threads:10] [hipe] [kernel-poll:false]

Interactive Elixir (0.12.5) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> %{2 => :b, :a => 1}
** (SyntaxError) iex:1: invalid token: %{2 => :b, :a => 1}
iex(1)> map = %{foo: "bar", hello: "world"}
** (SyntaxError) iex:1: invalid token: %{foo: "bar", hello: "world"}
iex(1)>

以及在运行脚本时:

$ cat simple.exs
map = %{:a => 1, 2 => :b}

$ elixir simple.exs
** (SyntaxError) simple.exs:1: invalid token: %{:a => 1, 2 => :b}
    (elixir) lib/code.ex:301: Code.require_file/2

在(可能不相关的)音符上,i命令也不起作用:

iex(1)> i {1,2}
** (RuntimeError) undefined function: i/1

我的Elixir安装是否搞砸了?这是在使用yum install elixir安装的CentOS上。

1 个答案:

答案 0 :(得分:0)

就我而言,问题是我使用的是Elixir / Erlang的非常旧的版本。 Elixir的CentOS yum软件包未保持最新。

我卸载了此版本的Elixir,而是使用asdf安装了最新版本的Erlang和Elixir。

https://thinkingelixir.com/install-elixir-using-asdf/

https://gist.github.com/rubencaro/6a28138a40e629b06470