erlang:fun_to_list(Fun) -> String :: string()
Fun = function()
返回 String
,表示創建 Fun
的代碼。
String
具有以下形式,如果Fun
是由一個創建的有趣的表達形式的fun
ModuleName:FuncName/Arity
:
"fun ModuleName:FuncName/Arity"
形式為String
當Fun
是從其他類型創建的有趣的表達方式根據 fun 表達式是在執行編譯代碼時執行還是在執行未編譯代碼(未編譯的 escripts、Erlang shell 和 erl_eval 模塊執行的其他代碼)時執行 fun 表達式而有所不同:
- compiled code
-
"#Fun<M.I.U>"
,其中 M、I 和 U 對應於名為module
,index
和uniq
結果是erlang:fun_info(Fun)
. - uncompiled code
- 所有從未編譯代碼中的 fun 表達式創建的具有相同數量的 fun 都被
fun_to_list/1
映射到相同的列表。
一般情況下不能使用fun_to_list/1
檢查兩個 funs 是否相等fun_to_list/1
沒有考慮樂趣的環境。看erlang:fun_info/1
如何獲得一個有趣的環境。
fun_to_list/1
的輸出可能因 Erlang 實現而異,並且可能在未來版本中發生變化。
例子:
-module(test).
-export([add/1, add2/0, fun_tuple/0]).
add(A) -> fun(B) -> A + B end.
add2() -> fun add/1.
fun_tuple() -> {fun() -> 1 end, fun() -> 1 end}.
> {fun test:add/1, test:add2()}.
{fun test:add/1,#Fun<test.1.107738983>}
說明:fun test:add/1
可升級,但 test:add2()
不可升級。
> {test:add(1), test:add(42)}.
{#Fun<test.0.107738983>,#Fun<test.0.107738983>}
說明:test:add(1)
和 test:add(42)
具有相同的字符串表示形式,因為未考慮環境。
>test:fun_tuple().
{#Fun<test.2.107738983>,#Fun<test.3.107738983>}
說明:字符串表示形式不同,因為 funs 來自不同的 fun 表達式。
> {fun() -> 1 end, fun() -> 1 end}. >
{#Fun<erl_eval.45.97283095>,#Fun<erl_eval.45.97283095>}
說明:在未編譯代碼中從這種形式的 fun 表達式創建的具有相同數量的所有 fun 都被 fun_to_list/1
映射到相同的列表。
相關用法
- erlang fun2ms(LiteralFun)用法及代碼示例
- erlang float用法及代碼示例
- erlang file_read用法及代碼示例
- erlang file_size用法及代碼示例
- erlang from_list用法及代碼示例
- erlang find用法及代碼示例
- erlang float(Number)用法及代碼示例
- erlang float_to_binary(Float, Options)用法及代碼示例
- erlang float_to_list(Float, Options)用法及代碼示例
- erlang floor(Number)用法及代碼示例
- erlang filter(Fun, Q1 :: queue(Item))用法及代碼示例
- erlang filtermap(Fun, Q1)用法及代碼示例
- erlang fold(Fun, Acc0, Q :: queue(Item))用法及代碼示例
- erlang fetch(Key, Orddict)用法及代碼示例
- erlang fetch_keys(Orddict)用法及代碼示例
- erlang filter(Pred, Orddict1)用法及代碼示例
- erlang find(Key, Orddict)用法及代碼示例
- erlang fold(Fun, Acc0, Orddict)用法及代碼示例
- erlang foldl(Fun, Acc0, Archive)用法及代碼示例
- erlang format(Format)用法及代碼示例
- erlang fread(Prompt, Format)用法及代碼示例
- erlang filter(Pred, MapOrIter)用法及代碼示例
- erlang filtermap(Fun, MapOrIter)用法及代碼示例
- erlang find(Key, Map)用法及代碼示例
- erlang fold(Fun, Init, MapOrIter)用法及代碼示例
注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 fun_to_list(Fun) -> String :: string()。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。