首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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项来构建的,并且根据各个格式说明符来构建。例如:

代码语言:javascript
复制
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会被返回。例如:

代码语言:javascript
复制
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()而绑定的任何变量的内容。

扫码关注腾讯云开发者

领取腾讯云代金券