table(Name) -> QueryHandle
table(Name, Options) -> QueryHandle
Name = tab_name()
Options = Option | [Option]
Option = {n_objects, Limit} | {traverse, TraverseMethod}
Limit = default | integer() >= 1
TraverseMethod = first_next | select | {select, match_spec()}
QueryHandle = qlc:query_handle()
返回查詢列表理解 (QLC) 查詢句柄。這qlc(3)
模塊提供了一種主要針對 Mnesia 的查詢語言,但 ETS 表、Dets 表和列表也被qlc
作為數據來源。調用dets:table/1,2
是製作 Dets 表的方法Name
可用於qlc
.
當關鍵位置隻有簡單限製時,qlc
使用lookup(Name, Key)查找 key 。如果不可能,則遍曆整個表。選項traverse
確定如何完成此操作:
-
first_next
- 通過調用dets:first/1
和dets:next/2
一次遍曆一個鍵。 -
select
- 通過調用來遍曆表dets:select/3
和dets:select/1
。選項n_objects
確定返回的對象數量(第三個參數select/3
)。匹配規範(第二個參數select/3
) 是由qlc
:-
簡單的過濾器被轉換為等效的匹配規範。
-
給定匹配所有對象的匹配規範,必須將更複雜的過濾器應用於
select/3
返回的所有對象。
-
-
{select,
match_spec()}
- 至於select
,通過調用來遍曆該表dets:select/3
和dets:select/1
。不同之處在於,匹配規範是明確指定的。這是如何聲明無法在以下提供的語法中輕鬆表達的匹配規範qlc
.
以下示例使用顯式匹配規範來遍曆表:
1> dets:open_file(t, []),
ok = dets:insert(t, [{1,a},{2,b},{3,c},{4,d}]),
MS = ets:fun2ms(fun({X,Y}) when (X > 1) or (X < 5) -> {Y} end),
QH1 = dets:table(t, [{traverse, {select, MS}}]).
具有隱式匹配規範的示例:
2> QH2 = qlc:q([{Y} || {X,Y} <- dets:table(t), (X > 1) or (X < 5)]).
後一個示例與前一個示例等效,可以使用函數 qlc:info/1
進行驗證:
3> qlc:info(QH1) =:= qlc:info(QH2).
true
qlc:info/1
返回有關查詢句柄的信息。在這種情況下,兩個查詢句柄返回相同的信息。
相關用法
- erlang table(Table)用法及代碼示例
- erlang tan用法及代碼示例
- erlang take(Key, Orddict)用法及代碼示例
- erlang take(Key, Map1)用法及代碼示例
- erlang take(String, Characters)用法及代碼示例
- erlang tuple_to_list用法及代碼示例
- erlang term_to_binary用法及代碼示例
- erlang term_to_binary(Term)用法及代碼示例
- erlang throw(Any)用法及代碼示例
- erlang time()用法及代碼示例
- erlang timestamp()用法及代碼示例
- erlang tl(List)用法及代碼示例
- erlang trace_pattern(MFA :: send, MatchSpec, FlagList :: [])用法及代碼示例
- erlang trace_pattern(MFA :: 'receive', MatchSpec, FlagList :: [])用法及代碼示例
- erlang trunc(Number)用法及代碼示例
- erlang tuple_size(Tuple)用法及代碼示例
- erlang tuple_to_list(Tuple)用法及代碼示例
- erlang to_list(Q :: queue(Item))用法及代碼示例
- erlang traverse(Name, Fun)用法及代碼示例
- erlang to_list(MapOrIterator)用法及代碼示例
- erlang titlecase(String :: unicode:chardata())用法及代碼示例
- erlang to_float(String)用法及代碼示例
- erlang to_integer(String)用法及代碼示例
- erlang to_graphemes(String :: unicode:chardata())用法及代碼示例
- erlang trim(String)用法及代碼示例
注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 table(Name) -> QueryHandle。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。