repair_continuation(Continuation, MatchSpec) -> Continuation
類型:
Continuation = continuation()
MatchSpec = match_spec()
恢複由返回的不透明延續select/3
或者select/1
如果延續已經通過外部術語格式(在節點之間發送或存儲在磁盤上)。
使用此函數的原因是連續術語包含已編譯的匹配規範,因此如果轉換為外部術語格式可能會失效。鑒於原始匹配規範保持完整,可以恢複延續,這意味著即使它已存儲在磁盤或另一個節點上,也可以在後續的 select/1
調用中再次使用。
例子:
以下調用序列可能會失敗:
T=ets:new(x,[]),
...
MS = ets:fun2ms(fun({N,_}=A) when (N rem 10) =:= 0 -> A end),
{_,C} = ets:select(T, MS, 10),
MaybeBroken = binary_to_term(term_to_binary(C)),
ets:select(MaybeBroken).
以下序列有效,因為對 repair_continuation/2
的調用重新建立了 MaybeBroken
延續。
T=ets:new(x,[]),
...
MS = ets:fun2ms(fun({N,_}=A) when (N rem 10) =:= 0 -> A end),
{_,C} = ets:select(T,MS,10),
MaybeBroken = binary_to_term(term_to_binary(C)),
ets:select(ets:repair_continuation(MaybeBroken,MS)).
注意
應用程序代碼中很少需要此函數。 Mnesia 使用它來提供分布式select/3
和select/1
序列。普通的應用程序或者使用 Mnesia,或者阻止 Continuation 轉換為外部格式。
從外部格式重新創建時已編譯的匹配規範的實際行為已發生變化,並且可能在未來版本中發生變化,但此接口保留用於向後兼容。看is_compiled_ms/1
.
相關用法
- erlang replace(Subject, Pattern, Replacement, Options)用法及代碼示例
- erlang replace(String, SearchPattern, Replacement)用法及代碼示例
- erlang replace(Subject, RE, Replacement, Options)用法及代碼示例
- erlang reverse用法及代碼示例
- erlang rename用法及代碼示例
- erlang remove用法及代碼示例
- erlang registered用法及代碼示例
- erlang register用法及代碼示例
- erlang register(RegName, PidOrPort)用法及代碼示例
- erlang registered()用法及代碼示例
- erlang read_file_info(Filename)用法及代碼示例
- erlang read_file_info(File)用法及代碼示例
- erlang remove(Key, Map1)用法及代碼示例
- erlang referenced_byte_size(Binary)用法及代碼示例
- erlang receive_response(RequestId, Timeout)用法及代碼示例
- erlang reverse(String :: unicode:chardata())用法及代碼示例
- erlang reverse(List1, Tail)用法及代碼示例
- erlang relation_to_family(BinRel)用法及代碼示例
- erlang relative_product(ListOfBinRels)用法及代碼示例
- erlang relative_product1(BinRel1, BinRel2)用法及代碼示例
- erlang restriction(BinRel1, Set)用法及代碼示例
- erlang restriction(SetFun, Set1, Set2)用法及代碼示例
- erlang recv(Socket)用法及代碼示例
- erlang recompose(URIMap)用法及代碼示例
- erlang resolve(RefURI, BaseURI)用法及代碼示例
注:本文由純淨天空篩選整理自erlang.org大神的英文原創作品 repair_continuation(Continuation, MatchSpec) -> Continuation。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。