如何定义名为in
的函数?显而易见的方法会产生语法错误:
iex(1)> defmodule MyModule do
...(1)> def in do
...(1)> end
...(1)> end
** (SyntaxError) iex:2: syntax error before: do
因为in
是保留字,这根本不可能吗?
答案 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