如何定义名为的函数in?显而易见的方法会产生语法错误:
iex(1)> defmodule MyModule do
...(1)> def in do
...(1)> end
...(1)> end
** (SyntaxError) iex:2: syntax error before: do
Run Code Online (Sandbox Code Playgroud)
这是不可能的,因为这in是一个保留字?
in不能def直接使用,因为它是一个运算符,但Elixir中的函数可以有任何可以转换为原子的名称,并且:in肯定是一个有效的原子.可能有另一种方法可以做到这一点,但我知道的唯一方法是使用unquote(:in)函数名称:
iex(1)> defmodule A do
...(1)> def unquote(:in)(), do: :ok
...(1)> end
iex(2)> A.in
:ok
Run Code Online (Sandbox Code Playgroud)