erl_format

erl_format

C库

erl_format

库摘要

创建和匹配Erlang术语。

描述

该模块包含两个例程:一个用于创建Erlang术语的通用函数,另一个用于模式匹配的Erlang项。

输出

ETERM *erl_format(FormatStr, ...)

类型

使用格式说明符和相应的参数集创建Erlang术语的一般函数,在很多方面printf()起作用。

FormatStr是格式规范字符串。有效的格式说明符如下:

  • ~i-整数

  • ~f-浮点

  • ~a-原子

  • ~s-字符串

  • ~w-任意的Erlang术语

对于包含在FormatStr中的每个格式说明符,都必须有相应的参数FormatStr。Erlang术语是根据FormatStr从相应参数中取代的值和Erlang项来构建的,并且根据各个格式说明符来构建。例如:

erl_format("[{name,~a},{age,~i},{data,~w}]", "madonna", 21, erl_format("[{adr,~s,~i}]","E-street",42)

这将创建一个(ETERM *)与Erlang项对应的结构[{name,madonna},{age,21},{data,[{adr,"E-street",42}]}]

该函数返回一个Erlang项,如果FormatStr没有描述有效的Erlang项,则返回NULL。

int erl_match(Pattern, Term)

类型

这个函数被用来执行类似Erlang的模式匹配。 有关匹配规则和更多示例,请参见Erlang参考手册中的模式匹配部分。

  • Pattern是一个Erlang项,可能包含无界变量。

  • Term是我们希望与之匹配的Erlang术语Pattern...

TermPattern中的任何未绑定变量进行比较。Pattern中的相应值。Term...

如果TermPattern可以匹配,该函数返回一个非零值,并将所有未绑定的变量绑定到Pattern.如果TermPattern不匹配,0会被返回。例如:

ETERM *term, *pattern, *pattern2; term1 = erl_format("{14,21}" term2 = erl_format("{19,19}" pattern1 = erl_format("{A,B}" pattern2 = erl_format("{F,F}" if (erl_match(pattern1, term1)) { /* match succeeds: * A gets bound to 14, * B gets bound to 21 */ ... } if (erl_match(pattern2, term1)) { /* match fails because F cannot be * bound to two separate values, 14 and 21 */ ... } if (erl_match(pattern2, term2)) { /* match succeeds and F gets bound to 19 */ ... }

erl_var_content()可用于检索由于调用erl_match()而绑定的任何变量的内容。