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 Function.identity用法及代码示例
- Elixir Function.capture用法及代码示例
- Elixir Function用法及代码示例
- Elixir Float.to_charlist用法及代码示例
- Elixir Float.ratio用法及代码示例
- Elixir File.cp_r用法及代码示例
- Elixir File.rm用法及代码示例
- Elixir Float.to_string用法及代码示例
- Elixir File.rmdir用法及代码示例
- Elixir File.exists?用法及代码示例
- Elixir File用法及代码示例
- Elixir File.touch!用法及代码示例
- Elixir File.stream!用法及代码示例
- Elixir File.rename用法及代码示例
- Elixir File.open用法及代码示例
- Elixir Float.ceil用法及代码示例
- Elixir Float.pow用法及代码示例
- Elixir File.rm_rf用法及代码示例
- Elixir File.regular?用法及代码示例
- Elixir File.touch用法及代码示例
- Elixir Float.round用法及代码示例
- Elixir Float.floor用法及代码示例
- Elixir File.dir?用法及代码示例
- Elixir Float.parse用法及代码示例
- Elixir StringIO.flush用法及代码示例
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Function.info(fun)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。