Diff

Diff[first,second]

返回 firstsecond 之间的差异.

Diff[first,second,format]

用指定的格式给出差异.

更多信息和选项

  • Diff 可为以下类型的表达式给出结果:
  • lists{}返回两个列表之间的差异
    text"text", File["fname.txt"]返回两段文字之间单个字符、单词或行的差异
    biomolecular sequencesBioSequence[]返回两个生物分子序列之间字母的差异
    cellsCell[], CellObject[]返回两个单元之间的内容、样式和选项的差异
    notebooksNotebook[], NotebookObject[], File["fname.nb"]返回两个笔记本之间的单元和选项的差异
  • Diff 返回一个 DiffObject.
  • 在比较元素序列时,Diff 使用 SequenceAlignment.
  • Diff 支持 SequenceAlignment 的所有选项,并添加了以下选项:
  • DiffAlignmentMethod Automatic如何对齐
    DiffGranularity Automatic差异的粒度
    DiffIgnore {}应忽略的数据类型列表
    DiffIncludeMatches Automatic是否在生成的 DiffObject 中包含匹配数据
    DiffInputFunction Identity对 diff 输入进行预处理的函数
  • 可用以下选项控制 Diff 输出的显示:
  • Alignment{Automatic, Automatic}如何在显示区域中对齐
    AppearanceAutomaticdiff 结果的整体外观
    AppearanceElementsAutomatic将 diff 结果中的哪些元素显示出来
    DiffStyle<||>diff 的基本样式指定
    ImageSizeAutomaticdiff 的整体图像大小
    ImageSizeActionAutomatic如果内容大小与图像大小不匹配该怎么办
    ScrollbarsFalse是否包含滚动条
    ScrollPosition{0,0}如果可以滚动,给出 scrollposition
  • 在比较文本时,DiffGranularity 可被设置为 "Lines""Words""Characters",以将差异相应地编码到生成的 DiffObject 中. 默认情况下,如果比较两个字符串,将给出 "Characters" 差异. 如果其中一个对象是文本文件,将给出 "Lines" 差异.
  • 比较笔记本时,Diff 使用有关单元结构的额外知识来确定如何对齐两个笔记本的单元列表. 默认情况下,它会查看要比较的两个单元的 ExpressionUUID 以进行对齐. 如果要通过匹配单元之间的编辑距离来对齐单元列表,请使用 DiffAlignmentMethod"CellEditDistance".
  • Diff[first,second] 等价于 Diff[first,second,"DiffObjectViewer"],它生成一个带有弹出菜单的查看器,允许你以交互方式选择不同的格式. format 取其他值时,会显示为给定的格式,但不能以交互方式更改以何种格式进行查看.
  • format 取有些值时,会明确地显示 firstsecond,并通过内嵌注释表明两者之间的不同:
  • "CharacterAlignment"对于字符串或生物序列,显示 firstsecond 的字符,彼此垂直对齐
    "Combined"显示 firstsecond 的组合版本
    "Separate"显示列表 {first,second}
    "SideBySide"在并排对齐的列中显示 firstsecond 的元素
    "Unified"用一个列统一显示 firstsecond 的元素
  • format 取有些值时,会使用抽象可视化来描述 firstsecond 之间变化的性质和程度:
  • "AlignmentChart"显示一个图表,其中 firstsecond 的元素被描绘成由点组成的列,用线相连,以表明元素之间是如何对齐的
    "ArrayPlot"用阵列图显示元素的组合列表,并使用彩色阵列单元表明发生变化的地方
    "SideBySideSummary"firstsecond 分别显示为彩色阵列单元序列,并省略较长的、未改变的序列
    "UnifiedSummary"firstsecond 显示为彩色阵列单元的组合序列,并省略较长的、未改变的序列
  • 其他可接受的 format 的值包括:
  • "Details"给出每个修改的文字描述
    "DiffObjectViewer"在带有交互格式设置的面板中显示
    "Report"创建一个笔记本,其中包含两个笔记本表达式之间的差异报告
    "SummaryBox"显示为 DiffObject 摘要框
  • 有些 format 值仅适用于表达式类型的子集.
  • Diff[first,second][format] 等价于 Diff[first,second,format].

范例

打开所有单元关闭所有单元

基本范例  (3)

找出两个列表之间的差异:

找出两个字符串之间的差异:

DiffObject 格式化为普通的摘要框:

范围  (5)

将字符串视为单词序列而不是字符序列:

比较两个列表,不考虑顺序或重复:

给出两个文本文件中内容相异的行:

找出两个单元之间的不同之处:

找出两个笔记本之间的不同之处:

选项  (15)

Appearance  (1)

指定结果的初始外观:

AppearanceElements  (1)

默认情况下, "Unified" 格式会显示行号:

AppearanceElements 中删除行号:

DiffAlignmentMethod  (1)

当笔记本的一行中有多个单元被修改时,Diff 会尝试找到最佳对齐方式:

可通过 DiffAlignmentMethod"SequenceAlignment" 关闭该功能,将导致两个单元块被标记为一个更改,没有内部对齐:

DiffGranularity  (1)

默认情况下,将字符串作为字符序列进行比较:

DiffGranularity 将字符串视为一系列的行:

DiffIgnore  (2)

比较单元时,Diff 会找出样式和选项的变化:

DiffIgnore 忽略所有样式和选项的更改:

DiffIgnore 忽略特定的笔记本选项:

DiffIncludeMatches  (3)

当有很多匹配的元素时,Diff 不会将它们全部包含在输出中:

DiffIncludeMatchesTrue 存储所有匹配的元素:

DiffIncludeMatches 也会对字符串的 DiffObject 产生影响:

显示 diff 通常会显示 DiffObject 中包含的所有匹配的项:

DiffInputFunction  (2)

比较任意表达式的 ExpressionCell 渲染:

比较任意表达式的 InputForm 字符串:

DiffStyle  (1)

默认情况下,Diff 格式通常用绿色表示添加,红色表示删除:

通过 DiffStyle 为特定元素设置样式:

用设置 DefaultDiffStyle None 删除默认样式:

ImageSize  (1)

为格式化的内容指定固定高度:

ImageSizeAction  (1)

自动缩小显示以适应固定的尺寸:

Scrollbars  (1)

Scrollbars Automatic 在必要时自动显示滚动条:

属性和关系  (5)

查询 DiffObject 的可用属性列表:

提取特定属性:

查询 DiffObject 的可用属性列表:

显示特定格式:

改变 DiffObject 的初始格式:

直接显示:

给定两个列表,DiffSequenceAlignment 将找到相同的变化,但以不同的方式表示它们:

DiffObject 中提取 SequenceAlignment

可能存在的问题  (2)

Diff 将字符串作为字符串进行比较,即使它们可以被解释为文件路径:

要比较文件的内容,请明确使用 File

Diff 不会尝试比较不同类型的对象:

巧妙范例  (1)

比较列表中每对文件的差异:

Wolfram Research (2024),Diff,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Diff.html.

文本

Wolfram Research (2024),Diff,Wolfram 语言函数,https://reference.wolfram.com/language/ref/Diff.html.

CMS

Wolfram 语言. 2024. "Diff." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/Diff.html.

APA

Wolfram 语言. (2024). Diff. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/Diff.html 年

BibTeX

@misc{reference.wolfram_2024_diff, author="Wolfram Research", title="{Diff}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/Diff.html}", note=[Accessed: 18-December-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_diff, organization={Wolfram Research}, title={Diff}, year={2024}, url={https://reference.wolfram.com/language/ref/Diff.html}, note=[Accessed: 18-December-2024 ]}