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
...
Term
和Pattern
中的任何未绑定变量进行比较。Pattern
中的相应值。Term
...
如果Term
和Pattern
可以匹配,该函数返回一个非零值,并将所有未绑定的变量绑定到Pattern
.如果Term
和Pattern
不匹配,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()而绑定的任何变量的内容。