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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。