Elixir语言中 List.myers_difference
相关用法介绍如下。
用法一
myers_difference(list1, list2)
(从 1.4.0 开始)
@spec myers_difference(list(), list()) :: [{:eq | :ins | :del, list()}]
返回表示 edit script
的关键字列表。
该算法在 E. Myers 的“An O(ND) Difference Algorithm and Its Variations”论文中进行了概述。
edit script
是关键字列表。每个键都说明了"editing action",以便使list1
更接近等于list2
; key 可以是 :eq
、 :ins
或 :del
。每个值都是 list1
或 list2
的子列表,应该插入(如果对应的键 :ins
)、删除(如果对应的键是 :del
)或单独保留(如果对应的键是 :eq
) 在 list1
中,以便更接近 list2
。
如果要处理差异脚本中的嵌套,请参阅
。myers_difference/3
例子
iex> List.myers_difference([1, 4, 2, 3], [1, 2, 3, 4])
[eq: [1], del: [4], eq: [2, 3], ins: [4]]
用法二
myers_difference(list1, list2, diff_script)
(从 1.8.0 开始)
@spec myers_difference(list(), list(), (term(), term() -> script | nil)) :: script
when script: [{:eq | :ins | :del | :diff, list()}]
返回一个关键字列表,该列表表示具有嵌套差异的 edit script
。
这是
的扩展,如果需要计算嵌套差异,可以给出myers_difference/2
diff_script
函数。如果没有这样的脚本,该函数可能会返回带有内部编辑脚本或nil
的列表。返回的内部编辑脚本将位于:diff
键下。
例子
iex> List.myers_difference(["a", "db", "c"], ["a", "bc"], &String.myers_difference/2)
[eq: ["a"], diff: [del: "d", eq: "b", ins: "c"], del: ["c"]]
相关用法
- Elixir List.keyfind!用法及代码示例
- Elixir List.keystore用法及代码示例
- Elixir List.to_float用法及代码示例
- Elixir List.to_string用法及代码示例
- Elixir List.starts_with?用法及代码示例
- Elixir List.to_charlist用法及代码示例
- Elixir List.insert_at用法及代码示例
- Elixir List.keymember?用法及代码示例
- Elixir List.to_tuple用法及代码示例
- Elixir List.to_atom用法及代码示例
- Elixir List.delete_at用法及代码示例
- Elixir List.replace_at用法及代码示例
- Elixir List.first用法及代码示例
- Elixir List.keyreplace用法及代码示例
- Elixir List.keysort用法及代码示例
- Elixir List.ascii_printable?用法及代码示例
- Elixir List.zip用法及代码示例
- Elixir List.last用法及代码示例
- Elixir List.to_integer用法及代码示例
- Elixir List.foldl用法及代码示例
- Elixir List.improper?用法及代码示例
- Elixir List.foldr用法及代码示例
- Elixir List.delete用法及代码示例
- Elixir List.to_existing_atom用法及代码示例
- Elixir List.pop_at用法及代码示例
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 List.myers_difference(list1, list2)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。