當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


erlang info(QH)用法及代碼示例


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.org大神的英文原創作品 info(QH) -> Info。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。