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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。