语法错误定义函数名为“ in”

时间:2018-07-29 18:44:14

标签: elixir

如何定义名为in的函数?显而易见的方法会产生语法错误:

iex(1)> defmodule MyModule do
...(1)>   def in do
...(1)>   end
...(1)> end
** (SyntaxError) iex:2: syntax error before: do

因为in是保留字,这根本不可能吗?

1 个答案:

答案 0 :(得分:9)

in不能直接与def一起使用,因为它是一个运算符,但是Elixir中的函数可以具有可以转换为原子的任何名称,并且:in当然是有效原子。可能还有另一种方法,但是我唯一知道的是使用unquote(:in)作为函数名称:

iex(1)> defmodule A do
...(1)>   def unquote(:in)(), do: :ok
...(1)> end
iex(2)> A.in
:ok