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