select_replace(Table, MatchSpec) -> NumReplaced
OTP 20.0
類型:
Table = table()
MatchSpec = match_spec()
NumReplaced = integer() >= 0
匹配表中的對象Table
用一個匹配規格。對於每個匹配的對象,現有對象將替換為匹配規範結果。
每個單獨對象的 match-and-replace 操作保證是原子和孤立.這select_replace
與所有其他選擇函數一樣,表遍曆作為一個整體並沒有給出這樣的保證。
匹配規範必須保證保留任何匹配對象的 key 。如果不是,select_replace
將失敗並顯示badarg
,而不更新任何對象。
目前,由於性能和語義限製,尚不支持 bag
類型的表。
該函數返回替換對象的總數。
示例
對於第二個位置有列表的所有二元組,在列表中第一個添加原子 'marker'
:
1> T = ets:new(x,[]), ets:insert(T, {key, [1, 2, 3]}).
true
2> MS = ets:fun2ms(fun({K, L}) when is_list(L) -> {K, [marker | L]} end).
[{{'$1','$2'},[{is_list,'$2'}],[{{'$1',[marker|'$2']}}]}]
3> ets:select_replace(T, MS).
1
4> ets:tab2list(T).
[{key,[marker,1,2,3]}]
通用單個對象compare-and-swap操作:
[Old] = ets:lookup(T, Key),
New = update_object(Old),
Success = (1 =:= ets:select_replace(T, [{Old, [], [{const, New}]}])),
相關用法
- erlang select_reverse(Continuation)用法及代碼示例
- erlang select(Table, MatchSpec)用法及代碼示例
- erlang select(Tab, Spec)用法及代碼示例
- erlang self用法及代碼示例
- erlang setelement(Index, Tuple1, Value)用法及代碼示例
- erlang setopts(Socket, Options)用法及代碼示例
- erlang setopts(Opts)用法及代碼示例
- erlang send_request(Node, Module, Function, Args)用法及代碼示例
- erlang set_token(Token)用法及代碼示例
- erlang seq(From, To)用法及代碼示例
- erlang seed(A1, A2, A3)用法及代碼示例
- erlang sin用法及代碼示例
- erlang str用法及代碼示例
- erlang substr用法及代碼示例
- erlang sort用法及代碼示例
- erlang sublist用法及代碼示例
- erlang sum用法及代碼示例
- erlang split_binary用法及代碼示例
- erlang spawn用法及代碼示例
- erlang spawn on Node用法及代碼示例
- erlang spawnlink用法及代碼示例
- erlang safe_fixtable(Table, Fix)用法及代碼示例
- erlang split(Filename)用法及代碼示例
- erlang size(Item)用法及代碼示例
注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 select_replace(Table, MatchSpec) -> NumReplaced。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。