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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。