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()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。