info(QH) -> Info
info(QH, Options) -> Info
类型:
QH = query_handle_or_list()
Options = [Option] | Option
Option = EvalOption | ReturnOption
EvalOption =
{cache_all, cache()} |
cache_all |
{max_list_size, max_list_size()} |
{tmpdir_usage, tmp_file_usage()} |
{tmpdir, tmp_directory()} |
{unique_all, boolean()} |
unique_all
ReturnOption =
{depth, Depth} |
{flat, boolean()} |
{format, Format} |
{n_elements, NElements}
Depth = infinity | integer() >= 0
Format = abstract_code | string
NElements = infinity | integer() >= 1
Info = abstract_expr() | string()
返回有关查询句柄的信息。该信息说明了准备查询以进行评估的结果的简化和优化。这个函数可能主要在调试时有用。
该信息采用 Erlang 表达式的形式,其中 QLC 最有可能出现。根据上述 QLC 表的格式函数,不能确定该信息绝对准确。
选项:
-
默认情况下返回块中的一系列 QLC,但如果指定了选项
{flat, false}
,则返回一个单个 QLC。 -
默认情况下返回字符串,但如果指定选项
{format, abstract_code}
,则返回抽象代码。在抽象代码中,端口标识符、引用和pid均由字符串表示。 -
默认情况下返回列表中的所有元素,但如果指定选项
{n_elements, NElements}
,则仅返回有限数量的元素。 -
默认情况下是显示对象的所有部分并匹配规范,但如果指定了选项
{depth, Depth}
,则低于一定深度的部分术语将被替换为'...'
。
info(QH)
相当于 info(QH, [])
。
例子:
在以下示例中,插入两个简单的 QLC 仅用于保存选项 {unique, true}
:
1> QH = qlc:q([{X,Y} || X <- [x,y], Y <- [a,b]]),
io:format("~s~n", [qlc:info(QH, unique_all)]).
begin
V1 =
qlc:q([
SQV ||
SQV <- [x, y]
],
[{unique, true}]),
V2 =
qlc:q([
SQV ||
SQV <- [a, b]
],
[{unique, true}]),
qlc:q([
{X,Y} ||
X <- V1,
Y <- V2
],
[{unique, true}])
end
在以下示例中,已插入 QLC V2
以显示连接的生成器和所选的连接方法。查找连接使用约定:第一个生成器 (G2
) 是遍历的生成器,第二个生成器 (G1
) 是查找常量的表。
1> E1 = ets:new(e1, []),
E2 = ets:new(e2, []),
true = ets:insert(E1, [{1,a},{2,b}]),
true = ets:insert(E2, [{a,1},{b,2}]),
Q = qlc:q([{X,Z,W} ||
{X, Z} <- ets:table(E1),
{W, Y} <- ets:table(E2),
X =:= Y]),
io:format("~s~n", [qlc:info(Q)]).
begin
V1 =
qlc:q([
P0 ||
P0 = {W, Y} <-
ets:table(#Ref<0.3098908599.2283929601.256549>)
]),
V2 =
qlc:q([
[G1 | G2] ||
G2 <- V1,
G1 <-
ets:table(#Ref<0.3098908599.2283929601.256548>),
element(2, G1) =:= element(1, G2)
],
[{join, lookup}]),
qlc:q([
{X, Z, W} ||
[{X, Z} | {W, Y}] <- V2
])
end
相关用法
- erlang info()用法及代码示例
- erlang info_lib()用法及代码示例
- erlang info_msg(Format)用法及代码示例
- erlang info_report(Report)用法及代码示例
- erlang inflateChunk(Z, Data)用法及代码示例
- erlang inflateSetDictionary(Z, Dictionary)用法及代码示例
- erlang init(UserData :: user_data(), AccessMode :: write | read, Fun :: file_op())用法及代码示例
- erlang insert_element(Index, Tuple1, Term)用法及代码示例
- erlang integer_to_binary(Integer)用法及代码示例
- erlang integer_to_binary(Integer, Base)用法及代码示例
- erlang integer_to_list(Integer)用法及代码示例
- erlang integer_to_list(Integer, Base)用法及代码示例
- erlang in(Item, Q1 :: queue(Item))用法及代码示例
- erlang in_r(Item, Q1 :: queue(Item))用法及代码示例
- erlang init(Q1 :: queue(Item))用法及代码示例
- erlang init_ack(Ret)用法及代码示例
- erlang intersect(Map1, Map2)用法及代码示例
- erlang intersect_with(Combiner, Map1, Map2)用法及代码示例
- erlang inspect(MP, Item)用法及代码示例
- erlang intersection_of_family(Family)用法及代码示例
- erlang inverse(Function1)用法及代码示例
- erlang inverse_image(BinRel, Set1)用法及代码示例
- erlang is_file用法及代码示例
- erlang is_dir用法及代码示例
- erlang is_atom用法及代码示例
注:本文由纯净天空筛选整理自erlang.org大神的英文原创作品 info(QH) -> Info。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。