當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。