当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Elixir Function.info用法及代码示例


Elixir语言中 Function.info 相关用法介绍如下。

用法一

info(fun)
(从 1.7.0 开始)
@spec info((... -> any())) :: [{information(), term()}]

返回包含函数信息的关键字列表。

所有类型的函数(本地和外部)的返回键(具有相应的可能值)如下:

  • :type - :local(用于匿名函数)或 :external(用于命名函数)。

  • :module - 一个原子,它是匿名时定义函数的模块,或者是命名函数时函数引用的模块。

  • :arity - (整数)调用函数的参数数量。

  • :name - (原子)函数的名称。

  • :env - 环境或自由变量的列表。对于命名函数,返回的列表始终为空。

fun 是匿名函数(即类型为 :local )时,返回以下附加键:

  • :pid - 最初创建函数的进程的 PID。

  • :index - (整数)模块函数表的索引。

  • :new_index - (整数)模块函数表的索引。

  • :new_uniq -(二进制)此函数的唯一值。它是根据整个模块的编译代码计算得出的。

  • :uniq - (整数)此函数的唯一值。这个整数是从整个模块的编译代码中计算出来的。

注意:此函数只能用于调试目的。

由编译器内联。

例子

iex> fun = fn x -> x end
iex> info = Function.info(fun)
iex> Keyword.get(info, :arity)
1
iex> Keyword.get(info, :type)
:local

iex> fun = &String.length/1
iex> info = Function.info(fun)
iex> Keyword.get(info, :type)
:external
iex> Keyword.get(info, :name)
:length

用法二

info(fun, item)
(从 1.7.0 开始)
@spec info((... -> any()), item) :: {item, term()} when item: information()

返回有关函数的特定信息。

返回的信息是 {info, value} 形状的二元素元组。

对于任何函数,要求的信息可以是任何原子 :module:name:arity:env:type

对于匿名函数,还有关于任何原子 :index:new_index:new_uniq:uniq:pid 的信息。对于命名函数,任何这些项的值始终是原子 :undefined

有关每个可能的返回值的更多信息,请参阅 info/1

由编译器内联。

例子

iex> f = fn x -> x end
iex> Function.info(f, :arity)
{:arity, 1}
iex> Function.info(f, :type)
{:type, :local}

iex> fun = &String.length/1
iex> Function.info(fun, :name)
{:name, :length}
iex> Function.info(fun, :pid)
{:pid, :undefined}

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Function.info(fun)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。